【发布时间】:2016-08-02 13:31:25
【问题描述】:
我创建了一个名为 ThreadA 的新线程并在主线程中启动它。
我在ThreadA等待一些操作完成。
经过一些操作后,我使用notify发送了通知。
但是主线程中wait下面的代码没有被调用,它等待ThreadA的整个代码完成。
是线程的本质还是只是线程访问运行问题?
Job job = new MyJob();
job.schedule();
synchronized(job) {
job.wait();
sysout("After notify");
}
这里job 是 org.eclipse.core.runtime.jobs
内部Job运行方法:
run {
synchronized(this) {
step 1();
notify();
step 2();
}
}
这里的第 2 步是大代码。
【问题讨论】:
-
请显示您的代码(您是如何调用
wait和notify)。 -
工作工作 =new MyJob();工作时间表();同步(作业){job.wait(); sysout("After notify")} 这里的工作是 org.eclipse.core.runtime.jobs。
-
内部作业运行方法:运行{synchronized(this){step 1();通知(); step 2();}} 这里第 2 步是大代码。
-
我的代码首先进入第 2 步,只有在完成第 2 步后才在主线程中调用 sysout
-
我可以建议将
wait()和notify()替换为更现代的东西,例如java concurrent 提供的实用程序类吗?
标签: java multithreading wait