Java线程中断的正确打开方式

Java线程中断的正确打开方式

什么是线程?

多任务:同一时刻运行多个程序的能力。每一个任务称为一个线程。可以同时运行一个以上线程的程序称为多线程程序。

线程是指进程中的一个执行流程,一个进程可以运行多个线程。比如java.exe进程可以运行很多线程。线程总是输入某个进程,进程中的多个线程共享进程的内存。

Java中线程是指java.lang.Thread类的一个实例或线程的执行。使用java.lang.Thread或java.lang.Runnable接口编写代码定义、实例化、启动新线程。

Java中每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行。main()方法运行在一个线程内,称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。

线程分为两类:用户线程和守候线程。当所有用户线程执行完毕后,JVM自动关闭。但是守候线程却不独立与JVM,守候线程一般是有操作系统或用户自己创建的。

Java线程中断的正确打开方式

线程中断概述

在多线程编程中经常会遇到需要中止线程的情况,比如启动多个线程去数据库中搜索,如果有一个线程返回了结果,其他线程就可以取消了。

Java线程中断的正确打开方式

中断线程的三个相差函数

  1. 通过成员方法Thread.interrupt()来设置中断状态为true
  2. 通过成员方法Thread.isInterrupted()来获取中断状态
  3. 通过静态方法Thread.interrupted()来获取中断状态,并且清除中断状态,也就是说连续两次调用此方法,第二次一定会返回false。
Java线程中断的正确打开方式

中断线程的方法

  • 正常结束

run方法执行完毕,线程会正常结束。

  • 监视某些条件,结束线程的不间断运行

有些线程是伺服线程。因此需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。

Java线程中断的正确打开方式

此时可以在while死循环内,每次循环时,察看外部条件,看看是否需要关闭当前线程。如果是,就break,跳出死循环,或者是抛出异常,跳出死循环,结束线程。

  • 捕获InterruptedException 运行时异常,中断当前线程

有些执行伺服任务的线程,在while(true)这样的死循环内部,是一个阻塞中的方法。此时,就不能采用第二种方法了,因为当该方法没有返回时,该线程一直处于阻塞当中,无法执行其他语句。

Java线程中断的正确打开方式

一个外部的Thread 对象 指向这个线程。 需要结束这个线程时,只需要调用thread对象的interrupt() 方法,就会在

Java线程中断的正确打开方式

语句中产生一个InterruptedException异常,从而结束该线程的阻塞状态,通过抛出异常,或者break跳出死循环,结束线程。

Java线程中断的正确打开方式


分享到:


相關文章: