主线程 唤醒_Java等待唤醒机制统计子线程运行时间的方式及其疑问
我想在主線程中獲取子線程運(yùn)行的時(shí)間,一種方式是使用join()方法,經(jīng)驗(yàn)證是可行的;
但是我想試試等待喚醒機(jī)制,思路是:子線程啟動(dòng)后主線程等待,子線程結(jié)束后喚醒主線程,但是不太清楚為什么會(huì)報(bào)錯(cuò),從運(yùn)行結(jié)果看出并沒有提前喚醒,但是卻報(bào)錯(cuò)了。
public class Test {
public static void main(String[] args) {
Object lock = new Object();
int num = 1000;
//子線程
Thread t = new Thread(() -> {
String s = "";
for (int i = 0; i < num; i++) {
s += "Java";
}
System.out.println("t Over");
lock.notify();
});
//計(jì)時(shí)
long start = System.currentTimeMillis();
System.out.println("start = " + start);
//啟動(dòng)子線程
t.start();
//主線程等待
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println("end = " + end);
System.out.println("end - start" + (end - start));
}
}
剛看多線程沒多久,不太明白為什么會(huì)報(bào)錯(cuò)?
總結(jié)
以上是生活随笔為你收集整理的主线程 唤醒_Java等待唤醒机制统计子线程运行时间的方式及其疑问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb查询值不为空_MongoD
- 下一篇: mysql编程的作用_数据库系统概论对学