贵州省住房和城乡建设局网站汕头第一网
web/
2025/10/4 10:37:20/
文章来源:
贵州省住房和城乡建设局网站,汕头第一网,wordpress外国主题,西安网站开发外包Thread.sleep();sleep就是正在执行的线程主动让出cpu#xff0c;cpu去执行其他线程#xff0c;在sleep指定的时间过后#xff0c;cpu才会回到这个线程上继续往下执行#xff0c;如果当前线程进入了同步锁#xff0c;sleep方法并不会释放锁#xff0c;即使当前线程使用sle…Thread.sleep();sleep就是正在执行的线程主动让出cpucpu去执行其他线程在sleep指定的时间过后cpu才会回到这个线程上继续往下执行如果当前线程进入了同步锁sleep方法并不会释放锁即使当前线程使用sleep方法让出了cpu但其他被同步锁挡住了的线程也无法得到执行。在多线程争用的情况拥有锁的线程进行一些耗时操作会极大降低吞吐量(amdahl定律)如果在同步块中使用sleep就是一种糟糕的做法它不会释放锁却阻止其他线程获得锁。2. Thread.yield();yeild是个native静态方法这个方法是想把自己占有的cpu时间释放掉然后和其他线程一起竞争(注意yeild的线程还是有可能争夺到cpu注意与sleep区别)。在javadoc中也说明了yeild是个基本不会用到的方法一般在debug和test中使用。3. Object.wait();wait会把当前的锁释放掉同时阻塞住让出CPU当别的线程调用该 Object 的 notify/notifyAll 之后有可能得到 CPU同时重新获得锁。当然同样的condition.await();也会释放锁并且让出CPU当然很多竞争锁失败的线程最终也会阻塞住但是这不是主动让出CPU不在讨论范围内。4. Thread.stop();太过暴力不推荐使用同时会释放所有锁。容易导致数据不一致具体请查看[高并发Java 二] 多线程基础5. Thread.currentThread().suspend();挂起线程suspend不会释放锁suspend容易发生死锁不推荐使用。原因请查看[高并发Java 二] 多线程基础6. LockSupport.park();与suspend一样挂起线程但是park/unpark不会发生死锁原因请查看[高并发Java 五] JDK并发包1
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86736.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!