已采纳回答 / 慕瓜3357229
如果都继承了Thread类的前提下,两种方式都可以创建一个线程对象,一般我们是使用第一种方式来创建线程对象(向上造型);PS:你的第二种方式是调用run方法,比不是让线程进入就绪状态(start());
2017-12-29
最赞回答 / 若如初见1997
你要知道 在ArmyRunnable 类 中 while(keepRunning) 这里是用的while 而不是if,while会一直判断,if只会判断一次,就是你在ArmyRunnable中的初始值!
2017-12-26
线程共享变量的可见性,原子性,volatile保证的可见性不保证原子性保证指令重排序,内存屏障,sleep休眠线程但是挂起线程不释放线程,后面的锁机制,不可变类等等,不懂你需要去查阅别的资料
2017-12-26
while (!this.isInterrupted()) {
System.out.println("Thread is running...");
long time = System.currentTimeMillis();
while ((System.currentTimeMillis() - time) < 1000) {
// 减少屏幕输出的空循环,每一秒输出一行信息
}
}
用interrupt()方法和设置旗帜标识的方法停止线程输出的结果一样啊
我用的 JDK 1.8
System.out.println("Thread is running...");
long time = System.currentTimeMillis();
while ((System.currentTimeMillis() - time) < 1000) {
// 减少屏幕输出的空循环,每一秒输出一行信息
}
}
用interrupt()方法和设置旗帜标识的方法停止线程输出的结果一样啊
我用的 JDK 1.8
2017-12-14