java 线程 final 在java中将线程定义为final的会有什么影响?怎么样彻底杀死进程,并重新创建一个进程。
或者先中断线程,再重新执行,不过要从线程的最开始部分开始执行说错了,都是线程,没有进程。怎样彻底杀死线程,并重新创建一样的线程。...
或者先中断线程,再重新执行,不过要从线程的最开始部分开始执行
说错了,都是线程,没有进程。怎样彻底杀死线程,并重新创建一样的线程。 展开
说错了,都是线程,没有进程。怎样彻底杀死线程,并重新创建一样的线程。 展开
4个回答
展开全部
要杀死一个线程并不容易。因为你就算现实调用了终止线程的方法。它也未必奏效。
然后你所说的一会进程一会线程的 ,到底是哪一个。。。线程和进程 区别大了。。。
然后你所说的一会进程一会线程的 ,到底是哪一个。。。线程和进程 区别大了。。。
更多追问追答
追问
说错了,都是线程。。。
追答
有stop方法,但是!
我说杀线程不容易是因为:
stop()这个方法已过时。 该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。
如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。
但是interrupt这个方法也有局限性。他并不是你一调用就立刻终止的。要在底层做一系列很复杂的操作。
所以如果要彻底满足你的需求, 要从你的代码设计入手。多线程永远都是很复杂的一件事情。
套用thinking in java里面一句话。”没有人敢说自己掌握了多线程“
展开全部
人为的设置一个会使java 线程报错的参数
然后需要杀死进程的时候 就调用这个参数
然后需要杀死进程的时候 就调用这个参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class processTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runtime runtime=Runtime.getRuntime();
// Process process=new Process();
String command="H:\\a.doc";
try {
// runtime.exec("cmd /c");
Process process=runtime.exec("cmd /c"+command);
process.destroy();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runtime runtime=Runtime.getRuntime();
// Process process=new Process();
String command="H:\\a.doc";
try {
// runtime.exec("cmd /c");
Process process=runtime.exec("cmd /c"+command);
process.destroy();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
追问
我问的是线程,不是进程。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-25
展开全部
DDDDDDDDD
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询