线程基本概念1

3 篇文章 11 订阅

线程、进程、程序

程序:完成特定任务、用某种语言编写的一段静态代码。

进程:正在执行的程序,是操作系统资源分配的最小单位。eg:运行中的程序、打开的网页等。

线程:是进程内部的最小执行单元,是操作系统调度的最小单位。

线程和进程的关系

  • 一个进程包含多个线程,一个线程只能属于一个进程,线程不能脱离进程。
  • 在主线程里面可以创建并启动其他的线程。
  • 一个进程内的所有线程共享该进程的内存资源。

创建线程的三种方法

  • 继承Thread类

    扩展Thread类,重写其中的run方法

    1. 定义

      public class MyThread extends Thread{
         
          @Override
          public void run() {
              
          }
      }
      
      
    2. 调用

      MyThread myThread=new MyThread();
      myThread.start();//注意是start()启动线程,不要调用成run方法
      
  • 实现Runnable接口

    1. 定义

      public class MyThread implements Runnable{
          
          @Override
          public void run() {
      
          }
      
      
    2. 调用

      MyThread myThread=new MyThread();
      Thread thread=new Thread(myThread);
      thread.start();
      
  • 实现Callable接口

    1. 定义

      public class MyThread implements Callable {
          
          @Override
          public Object call() throws Exception {
              return null;
          }
      }
      
    2. 调用

      MyThread myThread=new MyThread();
              FutureTask futureTask=new FutureTask(myThread);
              Thread thread=new Thread(futureTask);
              thread.start();
              try {
                  futureTask.get();
              } catch (InterruptedException e) {
                  e.printStackTrace();
              } catch (ExecutionException e) {
                  e.printStackTrace();
              }
      

注意前两个方法无返回值,最后一个方法提供了返回值;

Thread类中方法

  • 构造方法
构造方法说明
Thread()创建一个新的线程
Thread(String name)创建一个指定名称的线程
Thread(Runnable target)利用Runnable对象创建一个线程,启动时将执行该对象的run方法
Thread(Runnable target,String name)利用Runnable对象创建一个指定名称的线程,启动时将执行该对象的run方法
  • 常用方法
方法原形说明
void start()启动线程
final void setName(String name)设置线程名称
final String getName()返回线程名称
final void setPriority(int newPriority)设置线程优先级
final int getPriority()返回线程优先级
final void join() throws InterruptedException等待线程终止
Static Thread currentThread()返回对当前正在执行的线程对象的引用
static void sleep (long millis) throws InterruptedException让当前正在执行的线程休眠,时间由millis(毫秒)指定

线程优先级

优先级较高的线程有更多获得CPU的机会;

优先级用整数表示,取值范围为1~10,一般情况下,线程的默认优先级都是5,但也可以通过setPriority和getPriority方法来设置和返回优先级。

Java的调度方法

  • 同优先级组成先进先出队列,使用时间片策略。
  • 对高优先级,使用优先调度的抢战策略。

Thread类有三个静态常量来表示优先级

  • MAX_PRIORITY:最大,取值10。
  • MIN_PRIORITY:最小,取值1。
  • NORM_PRIORITY:默认,取值5。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值