JVM如何确保在输入对象的同步方法后线程获得锁定?同步关键字内部实现
2
A
回答
2
为了协调多个线程之间的共享数据访问,Java虚拟机将锁与每个对象和类关联起来。锁定就像一个特权,只有一个线程可以在任何时间“拥有”。如果一个线程想要锁定一个特定的对象或类,它会询问JVM。在线程向JVM请求锁定之后的某一时刻 - 可能很快,也许以后可能永远不会 - JVM会将锁定给该线程。当线程不再需要该锁时,它将其返回给JVM。如果另一个线程请求了同一个锁,则JVM将该锁传递给该线程。
退房有关更多信息,整篇文章:http://www.javaworld.com/article/2076971/java-concurrency/how-the-java-virtual-machine-performs-thread-synchronization.html
3
广泛的问题:
如何在JVM确保...?
“JVM”中的“VM”代表“虚拟机”。你的代码本身并没有做任何事情。当我们说“您的代码运行”时,我们的真正意思是,JVM 执行您的指示。而且它按照JVM规范中规定的规则进行操作。其中一条规则指出,JVM不得同时为同一对象上的两个不同线程执行同步块。
但也有很多层洋葱:一个typeical JVM使用本地线程(即,由操作系统提供的线程)来实现Java线程,并且通常依赖于操作系统提供互斥对象来同步线程。
继续深入下去,JVM和操作系统本身都没有真正做任何事情:它是计算机硬件执行操作系统和JVM的指令,真正使事情发生。
完整答案是“同步如何工作?”是一本关于操作系统设计的书籍的几章,另外还有一本关于计算机体系结构的书籍,还有一本关于计算机科学的书。为了充分了解这一切,你至少需要知道:
- “用户模式指令”与“模式具有特权的说明”,
- 系统如何调用工作,
- 如何操作系统“调度程序”执行“上下文切换”
- “比较和交换(CAS)”,“测试和设置(TAS)”,“负载链接/存储条件(LL/SC)”的硬件同步原语
这些都是你可以查看Wik的主题ipedia,但海事组织,书籍更适合学习这个深度的主题。
相关问题
- 1. 如何实现同步java关键字?
- 2. 关键字同步和同步概念
- 3. 同步关键字如何在内部工作
- 4. 关于Java参考和同步关键字实践的问题?
- 5. 不使用同步关键字的单例实现的懒惰初始化
- 6. 同步关键字不起作用
- 7. java中的同步关键字
- 8. 静态关键字内部和外部
- 9. Apache Solr实现多字的关键字
- 10. java如何实现内部类关闭?
- 11. C99'restrict'关键字的现实用法?
- 12. 在Java中“实现”关键字?
- 13. 关键字实现不工作Java
- 14. 如何实现关键字搜索?
- 15. Groovy'as'关键字来实现2+接口
- 16. 重新实现JavaScript删除关键字
- 17. read_excel的chunksize关键字未实现
- 18. 我必须重申对函数实现内联关键字
- 19. C#中“内部”关键字的实际用法
- 20. java同步访问不同的关键部分
- 21. BackboneJS - 使用关键字内部视图
- 22. 虚拟关键字内部组件
- 23. Java新的关键字内部结构
- 24. 同步的NodeJS实现IO
- 25. Android实现同步音效
- 26. Python 3.5异步关键字
- 27. ArrayList内部实现
- 28. 关于同步,同时实现多线程熟睡理发师
- 29. 实现WCF同步和异步
- 30. 实现异步接口同步