14.1什么是线程

多进程与多线程的区别

每个进程拥有自己的一套变量,而线程则共享数据。

14.1.1使用多线程给其他任务提供机会

将任务代码移动到实现了Runable接口的类的run方法中:

Runable r=()->{};

Runable创建一个Thread对象:

Thread t = new Thread(r);

启动线程:

t.start();

14.2 中断线程

当线程的run方法执行方法体中最后一条语句后,并经由执行return语句返回时,或者出现了在方法中没有捕获的异常时,线程将终止。在早期的Java版本中,还有一个stop方法,其它线程可以调用它终止线程。

没有可以强制线程终止的方法。interrupt方法可以用来请求终止线程。
当对一个线程调用interrupt方法时,线程的中断状态将被置位。
如果线程被阻塞(调用sleep或wait),就无法检测中断状态。

运行中的线程被中断,目的是为了让其他线程获得运行机会。

14.3线程状态

  • New(新建) new Thread( r);
  • Runnable(可运行) start();
  • Blocked(被阻塞)      当一个线程试图获取一个内部的对象锁(而不是java.util.concurrent库中的锁),而该锁被其它线程持有,则该线程进入阻塞状态。
  • Waiting(等待)   当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态。在调用Object.wait方法或Thread.join方法,或者是等待java.util.concurrent库中的Lock或Condition时,就会出现这种情况。
  • Timed waiting(计时等待)   有几个方法有一个超时参数。调用它们导致线程进入计时等待状态。带有超时参数的方法有Thread.sleep和Object.wait Thread.join Lock.tryLock以及Condition.await的计时版。
  • Terminated(被终止) ①run方法正常退出而自然死亡。②因为一个没有捕获的异常终止了run方法而意外死亡。stop()杀死一个线程,但是stop()已经过时。
java.lang.Thread
· void join()
    等待终止指定的线程。

14.4线程属性

14.4.1线程优先级

每一个线程有一个优先级。setPriority设置线程的优先级。

static void yield()导致当前线程处于让步状态。
14.4.2守护线程
t.setDemon(true);//为其它线程提供服务。计时线程。只剩下守护线程时,虚拟机就退出了。
14.4.3未捕获异常处理器

       线程的run方法不能抛出任何受查异常,但是,非受查异常会导致线程终止。在这种情况下,线程就死亡了。

//该处理器必须实现接口:
Thread.UncaughtExceptionHandler
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值