Java Math.random()导致主线程假死(?)
来源:互联网 发布:nginx 访问index.php 编辑:程序博客网 时间:2024/06/14 04:41
先来看下下面这段测试代码
运行main函数后,正常来说一定会在2秒(main中sleep的时间)后输出下面的结果但是等了很久,只输出了begin join t1,而main函数迟迟没有结束分析
在Thread1启动后,几乎所有的cpu时间片都花费在Math.random()这行上,而没有时间回到主线程
所以,解决方法是:让CPU除了生产随机数,再做点其他事情,让主线程得到机会运行
简单修改一下代码,原先new String没有传参数,JVM可能会认为是无效代码不做处理,这是-server模式下的一个优化,现在加了参数,JVM认为需要开辟内存,在这个过程中,CPU时间片被拆分,分给了主线程
现在再次运行,发现可以正常输出main finished了,当然实际开发过程中,也可以使用其他方式去拆分CPU时间片本案例基于JDK1.8u91 server模式
0 0
- Java Math.random()导致主线程假死(?)
- 【分析】Java Math.random()导致主线程假死
- iOS某操作霸占主线程过久导致界面假死的一种解决方法
- Java-Math.random()见解
- Java基础----Math.random()
- java-随机数Math.random()
- Math.random()和java.util.Random对比
- java基础<math和Random>
- 随机数 java.util.Random与java.lang.Math.Random()-Java
- java.util.Random 和java.lang.Math的random方法
- java中Math.random()与java.util.random()的区别
- java中Math.random()与java.util.random()的区别
- Math.random()
- Math.random()
- Math.random()
- math.random()
- math.random()
- Math.random()
- HDU 2167 Pebbles方格取数
- 【php中的curl】php中curl的详细解说
- Git常用命令
- java调用php的webService
- Activity生命周期官方原文文档
- Java Math.random()导致主线程假死(?)
- 关于百度上传组件webuploader,xhr直接abort
- RasSetAutodialParam
- 【最短路径】畅通工程续
- ORACLE SQLLOADER入库效率测评1800W/h
- Linux命令-注销 关机 重启
- 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识
- OSG源码解读----OpenThreads库
- Java---反射机制