package exercise.exercise08;
public class SimpleThread extends Thread {
private int countDown = 5;
private static int threadCount = 0;
public SimpleThread() {
super(Integer.toString(++threadCount));
}
@Override
public String toString() {
return "" + getName() + "(" + countDown + ")";
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(10);
} catch (Exception e) {
}finally{
System.out.println("this is thread's finally()");
}
System.out.println(this);
if (--countDown == 0) {
return;
}
}
}
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 5; i++) {
Thread t = new SimpleThread();
t.setDaemon(true);
t.start();
}
}
}
/**第一种情况
* 在主线程不休眠,且设置为后台线程的情况下
* 1、如果主线程先运行,这不会打印任何信息,不会进入finall块
* 2、如果是t线程得到运行的话,按道理只会打印线程信息,不会进入finally块。(但一直不会出现t线程先得到运行的情况)
* */
/**第二种情况
* 在主线程休眠1秒,且设置为后台线程的情况下
* 会进入finall块
* */
博主才疏学浅,如发现问题,请指正!
JAVA编程思想第四版-多线程的练习答案之练习8
最新推荐文章于 2021-04-16 10:45:21 发布