手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

java如何停止线程

时间:2024-10-18 07:17:06

1、使用boolean类型的变量,来终止线程 那么如果需要停止一个线程时,应该怎么办?其实方法很魑徒扮阙简单,只是需要我们执行确定线程什么时候退出就可以了。仍用本例来说,飧肇苡卫只需要在ChangeObjectThread线程中增加一个stopMe()方法就可以了。 在下面的代码里面,定义了一个标记变量stopMe,用于指示线程是否需要退出。当stopMe()方法被调用时,stopme就会被赋值为false,此时在代码里面的while(stopMe)就会检测到这个改动,线程就退出了。

java如何停止线程

2、java线程的中断 中断可以理解为线程的一个标识位属性,它表示一个运行中的线程是否被其他线程进行了中断操作。中断好比其他线程对该线程打了个招呼,其他线程通过调吹涡皋陕用该线程的interrupt()方法对其进行中断操作。 线程通过检查自身是否被中断来进行响应,线程通过方法isInterrupted()来进行判断是否被中断,也可以调用静态方法Thread.interrupted()对当前线程的中断标识位进行复位。如果该线程已经处于终结状态,即使该线程被中断过,在调用该线程对象的isInterrupted()时依旧会返回false。 从Java的API中可以看到,许多声明抛出InterruptedException的方法(例如Thread.sleep(longmillis)方法,当线程在sleep()休眠时,如果被中断,这个异常就会产生)。这些方法在抛出InterruptedException之前,Java虚拟机会先将该线程的中断标识位清除,然后抛出InterruptedException,此时调用isInterrupted()方法将会返回false。 在下面代码清单例子中,首先创建了两个线程,SleepThread和BusyThread,前者不停地睡眠,后者一直运行,然后对这两个线程分别进行中断操作,观察二者的中断标识位。 从结果可以看出,抛出InterruptedException的线程SleepThread,其中断标识位被清除了,而一直忙碌运作的线程BusyThread,中断标识位没有被清除。

java如何停止线程
java如何停止线程

3、使用中断来终止线程 下面的例子代码,使用了中断机制来终止一个线程。

java如何停止线程
java如何停止线程

4、关于终止线程的选择 感觉使用boolean类型的变量,实现起来比较简单。还不会引起数据的不正确问题。

java如何停止线程

5、参考的书籍Java高并发程序设计Java并发编程的艺术

java如何停止线程
© 手抄报圈