在多线程程序中,我怀疑当一个线程 wait() 时,它不会占用太多 cpu 利用率,因此 cpu 可以交换以处理其他线程。
例如,100 个线程一起启动同一个任务,而 50 个线程实际执行该任务,而其他 50 个线程等待所有 50 个任务完成。后一种情况比前一种情况花费的时间要少得多。
任何人都可以建议一些关于这个的阅读吗?
在多线程程序中,我怀疑当一个线程 wait() 时,它不会占用太多 cpu 利用率,因此 cpu 可以交换以处理其他线程。
例如,100 个线程一起启动同一个任务,而 50 个线程实际执行该任务,而其他 50 个线程等待所有 50 个任务完成。后一种情况比前一种情况花费的时间要少得多。
任何人都可以建议一些关于这个的阅读吗?
wait 方法有两个目的:
每当一个方法在同步块中做某事时,块中的任何东西都必须等待被锁定的对象被释放。
synchronized (lockObject) {
// someone called notify() after taking the lock on
// lockObject or entered wait() so now it's my turn
while ( whatineedisnotready) {
wait(); // release the lock so others can enter their check
// now, if there are others waiting to run, they
// will have a chance at doing so.
}
}
必读: