java 如何结束掉一个不再需要的进程

前两天面试,面试官问到一个问题,说如何结束掉一个线程。我们都知道线程自带的有结束的方法stop,可是面试官会问这么浅显的东西吗?所以当时我没敢说话(当时一起面的四个人,我是其中之一),其中有一个就说线程类自己提供的有结束的方法。结果可想而知,说了等于白说。今天想来来,专门查了下,发现这个答案应该是当时面试官期望的答案。

设置一个标志,让其自动return最安全。

public class T {

  public static void main(String[] args) {

  // 启动线程

  MyThread thread = new MyThread();

  new Thread(thread).start();

  // 你的其它的工作,此时线程在运行中

  // 你不想让线程干活了,停掉它

  // 注意,这只是一个标志,具体线程何时停,并不能精确控制

  thread.allDone = true;

  }

  }


class MyThread implements Runnable {

  boolean volatile allDone = false;

  public void run() {

  // 每次循环都检测标志

  // 如果设置停止标志时已经在循环里

  // 则最长需要等待一个循环的时间才能终止

  while (!allDone) {

  // 循环里的工作

  }

  }

  }

  修正,增加了 volatile 关键字,避免多个CPU出问题。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值