「java线程异常终止」java 线程终止
今天给各位分享java线程异常终止的知识,其中也会对java 线程终止进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Java线程加了死循环,但异常终止,可能是什么导致
ss.accept()方法是阻塞的,也就是说ss所在的线程运行到accept()函数就会一直等待,直到ss接收到了一个Socket请求。正因为accept()是阻塞的,所以一般会把这个函数放在一个单独的线程,这样就不会影响主线程(例如程序界面)的运行
如何在JAVA中让一个线程死亡或结束
当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。
线程进入死亡状态的方法有两种:
1、自然终止:正常运行run()方法后终止;
2、异常终止:调用stop()方法让一个线程终止运行。
如下代码:
public class ThreadDemo implements Runnable{
public void run() {
}
}
当run方法执行结束,即线程死亡(结束)。
如何终止java线程
JDK中提供了stop方法,但是现在已经不建议使用了。这个方法会使线程突然停止,没有经过别的处理,所以在有的时候会造成脏读。在一些情况下,需要采取其他方式来停止线程。
例:
public class test {
public static void main(String[] args) throws InterruptedException {
try{
Thread thread1=new Thread(new TheThread(),"thread1");
thread1.start();
Thread.sleep(2000);
thread1.interrupt();//采用异常停止线程
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
class TheThread extends Thread{
public void run() {
super.run();
for (int i = 0; i 10; i++) {
if(this.interrupted()){
break;
}
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
java线程如何停止?
通过调用interrupt方法可以使得处于阻塞状态的线程抛出一个异常,即interrupt方法可以用来中断一个正处于阻塞状态的线程;另外,改方法还会设置线程的中断状态(注:isInterrupted()可以用来查询中断状态)。
线程阻塞在reader.readLine()时,即使主线程改变了标志变量,但是并不能立即结束子线程,只有等待阻塞被打破,且运行到下一次循环条件判断的时候才能终止。所以在使用这种方法时,应该考虑到阻塞这种情况。当然,如果整个循环内的操作属于同一事务时,这种方法倒很不错。
调用线程对象的interrupt()时,sleep的线程会抛出InterruptedException异常,从而中断循环,终止线程。但是如果是IO如输入这些阻塞,中断的方法又不起作用了,还有就是对于没有阻塞的线程,调用interrupt()是达不到终止线程的效果的。
java线程异常终止的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 线程终止、java线程异常终止的信息别忘了在本站进行查找喔。