当前位置: 技术问答>java相关
java 线程问题
来源: 互联网 发布时间:2014-12-29
本文导语: 每调用一次sleep方法,就产生一个InterruptedException异常,为何下面程序不能输出“2”。谢谢! public class test3 extends Thread{ public void run(){ System.out.println("1"); } public static void main(String args[]){ (ne...
每调用一次sleep方法,就产生一个InterruptedException异常,为何下面程序不能输出“2”。谢谢!
public class test3 extends Thread{
public void run(){
System.out.println("1");
}
public static void main(String args[]){
(new test3()).start();
try{
(new test3()).sleep(3000);
}
catch(InterruptedException e){
System.out.println("2");
}
}
}
public class test3 extends Thread{
public void run(){
System.out.println("1");
}
public static void main(String args[]){
(new test3()).start();
try{
(new test3()).sleep(3000);
}
catch(InterruptedException e){
System.out.println("2");
}
}
}
|
看来调用sleep方法,并不会产生一个InterruptedException异常。
需要调用interrupt方法才行。
只有这个线程处于sleep()状态,别的线程才有可能调用他的interrupt()方法,
所以当这个线程sleep时,要捕获interruptedException异常。
public class test3 extends Thread{
public void run(){
System.out.println("1");
while (true){
try{
this.sleep(5);
}
catch(InterruptedException e){
System.out.println("2");
System.exit(0) ;
}
}
//System.out.print("3") ;
}
public static void main(String args[]){
test3 a=new test3();
a.start();
try{
a.sleep(3000) ;
a.interrupt();
}
catch(InterruptedException e){
System.out.println("3");
}
}
}
需要调用interrupt方法才行。
只有这个线程处于sleep()状态,别的线程才有可能调用他的interrupt()方法,
所以当这个线程sleep时,要捕获interruptedException异常。
public class test3 extends Thread{
public void run(){
System.out.println("1");
while (true){
try{
this.sleep(5);
}
catch(InterruptedException e){
System.out.println("2");
System.exit(0) ;
}
}
//System.out.print("3") ;
}
public static void main(String args[]){
test3 a=new test3();
a.start();
try{
a.sleep(3000) ;
a.interrupt();
}
catch(InterruptedException e){
System.out.println("3");
}
}
}