package com.partner4java;
import java.util.concurrent.TimeUnit;
/**
* 当你设置了后台运行,且在运行结束之前没有让该线程报错或者做清理工作,就不再打印finally了
* @author partner4java
*
*/
public class Test2 {
public static void main(String[] args) throws InterruptedException {
// test1();
// test2();
// test3();
test4();
}
private static void test1() throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("try");
TimeUnit.MILLISECONDS.sleep(5000);
Thread.currentThread().interrupt();
System.out.println("try last");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
}
});
thread.setDaemon(true);
thread.start();
TimeUnit.MILLISECONDS.sleep(1000);
System.out.println("hello");
// 后台打印:
// try
// hello
}
private static void test2() throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("try");
Thread.currentThread().interrupt();
System.out.println("try last");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
}
});
thread.setDaemon(true);
thread.start();
TimeUnit.MILLISECONDS.sleep(1000);
System.out.println("hello");
// 后台打印:
// try
// try last
// finally
// hello
}
private static void test3() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("try");
TimeUnit.MILLISECONDS.sleep(5000);
System.out.println("try last");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
}
});
thread.setDaemon(true);
thread.start();
thread.interrupt();
System.out.println("hello");
// 后台打印:
// java.lang.InterruptedException: sleep interrupted
// .....
// hello
// try
// finally
}
private static void test4() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("try");
TimeUnit.MILLISECONDS.sleep(5000);
System.out.println("try last");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
}
});
thread.setDaemon(true);
thread.start();
int i = 1/0;
System.out.println("hello");
// 后台打印:
// java.lang.ArithmeticException: / by zero
// ...
// try
}
}
在线程中finally是否运行
最新推荐文章于 2023-06-21 12:32:21 发布