0%

如何终止一个线程

JAVA如何让一个线程死亡或结束

  不推荐使用stop()方法终止线程。,因为stop()方法容易引起死锁。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1.	/**
2. * JAVA里面如何使用一个线程死亡或结束 *
3. */
4. public class T {
5. public static void main(String[] args) {
6. // 启动线程
7. MyThread thread = new MyThread();
8. new Thread(thread).start();
9.
10. // 你的其它的工作,此时线程在运行中
11.
12. // 你不想让线程干活了,停掉它
13. // 注意,这只是一个标志,具体线程何时停,并不能精确控制
14. thread.allDone = true;
15. }
16. }
17.
18. class MyThread implements Runnable {
19. boolean **volatile** allDone = false;
20.
21. public void run() {
22. // 每次循环都检测标志
23. // 如果设置停止标志时已经在循环里
24. // 则最长需要等待一个循环的时间才能终止
25. while (!allDone) {
26. // 循环里的工作
27. }
28. }
29. }

使用 volatile 标识的变量具有线程可见性。当一个线程修改了这个变量的值,其他线程立即可以知道。所以可以避免多CPU出问题。