多线程 当A线程将B线程唤醒后,A线程是否同时也会将CPU的执行权让给B,还是谁竞争到CPU的执行权谁就执行?多线程竞争 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谁竞争到CPU的执行权谁就执行 B被唤醒后,不会马上进入执行状态,而是先处于就绪太,被处理机调度后由 cpu分配资源,进入执行态。 +1。notify只是唤醒某个wait和线程去参与cpu资源的竞争,多个线程之间的竞争到cpu的机会是均等的(当然也不一定,至少都有这个权利)。对于谁得到cpu的执行权,就看他们谁得到了cpu资源了 唤醒只是进入runnable状态,只有获取CPU后才会执行 楼上面说的都大同小异,反正唤醒后不可能达到运行状态,它会从等待状态到可运行或就绪状态,他们的执行,就得看cpu的心情了 当然是谁先争取到CPU谁就有时间有权利去执行。 当一个线程被唤醒后,他只能处于就绪状态,如果没有对线程设置优先记得话,线程默认的优先级是5,也就是所有线程优先级是一致的,至于随先执行,这个又CPU来决定,他会一人分配一个时间片来处理线程。 竞争。 除非A线程也进入wait()状态。 A线程唤醒B线程后,B线程进入就绪等待态,等待CPU分配执行时间,A和B竞争,谁先竞争到cpu谁先执行。 那有什么方法能保证A notify B后B立即得到控制权并开始执行呢? 谁竞争到CPU的执行权谁就执行 1)线程A必须有欲调用的实例的锁定才能执行notify方法。2)被notify唤醒的线程并不是在notify的那一瞬间就开始执行,因为在notify的那一瞬间,执行notify的那个线程还握着锁不放,所以其他线程无法获取该实例的锁定。(notify之后,线程进入阻挡(阻塞)状态,但是已从wait set中取出)3) 假设执行notify方法时,wait set 里正在等候的线程不只是一个。规范里并没有注明此时该选择哪一个线程。,程序属性最好不因所选线程而变动。4) 一般较稳妥的做法是选取notifyAll()方法、选取notify的话,因为要唤醒的线程比较少,程序处理速度当然比notifyAll略胜一筹。但若这部分处理地不好,程序可能会有程序挂掉的危险。 A线程把B线程唤醒,就是解除了B线程的冻结状态,B线程可以和A线程可以一起抢夺CPU。 有用过JADE开发代理的吗?交流 chm文件显示问题 [问题]一个简单Socket编程的问题 关于连接数据库的问题,请各位大哥哥看下! UnsupportedClassVersionError问题;答完结贴; ★★★★急,急,急!!!有关创意★★★★ 我知道放的不是地方,但我没办法了 异常一问 悬赏100分,帮我解决如何打印JTABLE中的数据!急! 需要JIVE 2.5以上的源码 关于mina下实现UDP穿洞的问题。 java中私有成员变量的访问的问题 java初学者的问题,求大神指点
2)被notify唤醒的线程并不是在notify的那一瞬间就开始执行,因为在notify的那一瞬间,执行notify的那个线程还握着锁不放,所以其他线程无法获取该实例的锁定。
(notify之后,线程进入阻挡(阻塞)状态,但是已从wait set中取出)
3) 假设执行notify方法时,wait set 里正在等候的线程不只是一个。规范里并没有注明此时该选择哪一个线程。,程序属性最好不因所选线程而变动。
4) 一般较稳妥的做法是选取notifyAll()方法、选取notify的话,因为要唤醒的线程比较少,程序处理速度当然比notifyAll略胜一筹。但若这部分处理地不好,程序可能会有程序挂掉的危险。