怎么网上两种说法都有呢?
JVM规范有没有规定?
JVM规范有没有规定?
解决方案 »
- 关于ssh!
- 如何分解合成mht文件
- 有着Java基础的你,具备什么条件下后才能完全开发简单的Java游戏呢?
- 在java中如何以二进制的形式打开文档,并依次读取字节?!!!!
- 反编译java程序 pdg格式电子书籍
- 怎样生成脱离虚拟机的java程序呢?请高手指教
- 面对java培训材料你敢说是java专家么?(java培训材料连载之6 权限 国际化
- Applet 必须每次都从服务器上下载吗,它能象ActiveX 控件下载到本地吗
- SQL Exception occur.Message is:对象名 'C' 无效。Connection Successful! SQL Exception
- 找不到?~~~~~```
- 如何覆盖list里面的信息
- List<User> userList = new ArrayList<User>();
有没有什么Java/JVM标准文档里面有概述呢? 给个下载地址吧,谢谢
互斥锁,一般的synchronized,ReentrantLock就是互斥锁,ReadWriteReentrantLock中的写锁也是互斥锁,读锁不是互斥锁。当线程需要获取锁的时候,而此时锁不可用,该线程就需要等待,这个等待该如何实现呢?
1、用循环不断的轮询锁的状态,锁可用的时候就退出。这就是自旋锁,众所周知,这样里面基本不做什么事情的循环是非常耗CPU的,如果等待锁的时间很长,用这种方式是不合适的
2、利用操作系统的指令,让线程等待,当锁可用时,让线程醒过来。这种适合需要等待长时间的。如果等待的时间短,这个操作是非常耗时的。JVM可以统计某个锁之前的等待时间,从而选择使用自旋锁还是使用操作系统指令。不过很多JVM还是使用保守的方式,大部分时候并不采用自旋锁关于使用什么锁,jvm是没有规定的。jvm只是规定当要获得的互斥锁不可用的时候,线程需要等待。