Java等待唤醒机制统计子线程运行时间的方式及其疑问

BronyaJump 2019-06-09 06:22:52
我想在主线程中获取子线程运行的时间,一种方式是使用join()方法,经验证是可行的;
但是我想试试等待唤醒机制,思路是:子线程启动后主线程等待,子线程结束后唤醒主线程,但是不太清楚为什么会报错,从运行结果看出并没有提前唤醒,但是却报错了。
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();
});
//计时
long start = System.currentTimeMillis();
System.out.println("start = " + start);
//启动子线程
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));
}
}


刚看多线程没多久,不太明白为什么会报错?
...全文
422 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
BronyaJump 2019-06-10
  • 打赏
  • 举报
回复

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧