在多线程的程序,我怀疑,当一个线程等待(),它不会搞太多的CPU使用率,使CPU可以交换处理其他线程。
例如,100个线程开始相同的任务一起比较,50个线程实际上做任务,而其他50个线程等待,直到所有50个任务都完成。 后一种情况的成本比以前少得多的时间。
任何人都可以提出一些有关此读数?
在多线程的程序,我怀疑,当一个线程等待(),它不会搞太多的CPU使用率,使CPU可以交换处理其他线程。
例如,100个线程开始相同的任务一起比较,50个线程实际上做任务,而其他50个线程等待,直到所有50个任务都完成。 后一种情况的成本比以前少得多的时间。
任何人都可以提出一些有关此读数?
wait方法有两个目的:
每当一个方法做了synchronized块里面的东西,无论是在块必须等待被释放锁定的对象。
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.
}
}
必读:
Java的synchronized