工作之余翻译oracle官方的Java Language Specification,今天翻译第17章,线程和锁。原文地址:http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html
Chapter 17. Threads and Locks
在前几章我们大多时候关注的是在单条语句或表达式在一个时间点的执行状态,换句话说,就是单线程。JAVA虚拟机能支持许多线程同时执行。这些线程独立的执行代码和操作共享内存的值和对象。线程支持在有许多硬件处理器,单一硬件处理器上的时间分片,多硬件处理器的时间分片等环境。
Thread类代表线程。用户创建线程的唯一方法是创建这个类的对象。每个线程关联一个对象。这个线程对应的Thread对象的start()方法被调用时该线程将要启动。
线程的行为是不可预支的,特别是没有正确的同步时。本章重要描述多线程的语义。他包括哪些值在被多线程更新时通过共享内存其他线程可见的规则。对规范来说,不同的硬件的内存模型是相似的。这些语义JAVA程序语言模型所知,当没有混乱出现,我们就可以简单的参考内存模型。
这些语义没有规定多线程程序应该被怎样执行。多线程的行为描述是可以被展示的。任何执行策略只能产生一种被接受的执行策略。
17.1. Synchronization
JAVA程序语言提供多种线程通信机制。大多数基本的是这些方法是synchronization(同步的),采用monitors实现。每个JAVA对象会关联一个monitor,一个线程可以锁和解锁。一个线程可以锁一个指定的监视器多次。每次解锁抵消一次加锁带来的影响。
Synchronized语句估算一个对象的引用。然后在这对象的监视器上试途完成一个锁动作,否则不处理直到锁动作能成功的完成。加锁动作完成后,synchronized语句块内的语句被执行。如果语句体被正常执行或者中断,一个解锁动作在这个监视器上自动完成。
一个同步方法在执行时会自动执行一个加锁动作。方法体不允许被执行直接加锁动作成功完成。如果该方法是一个实例方法,这个锁所在监视器是被调用的这个实例对象的监视器(这个对象在方法体执行期间被标识为this).如果方法是静态的,这个锁监视器被关联到这个方法所在类对象上。执行方法体自然或者中断,一个解锁动作会在该监视器上执行。
JAVA语言不阻止也不需要发现死锁。程序在持有多个对象锁时应该用传统的方法来避免死锁。如果需要可以创建更高等级的私有锁。
其他机制,比如读写一个volatile变量和用 java.util.concurrent
包下的类。提供可选的同步方法。
17.2. Wait Sets and Notification
每个对象除了关联了一个监视器之外,还关联了一个等候区。等候集合是一个线程集合。
对象首次创建时,等候区是空的。他的动作元素包含原子的增加和移除线程。等候区的操作只能通过以下方法:Object.wait,Object.notify,Object.notifyAll
等候区的操作也会影响一个线和的中断状态。
相关推荐
Tobit与Probit模型Stata实现代码-最新发布.zip
Jupyter-Notebook
红警单机版(单机游戏)
SwiftUI编写的贪吃蛇小游戏讲解
1996-2020年中国文化旅游统计年鉴-最新数据发布.zip
Jupyter-Notebook
omwfa1hxz_1.apk
2001-2023年上市公司大数据应用指数数据集(6.1万样本,5600家企业,含原始数据、代码及结果,最新).zip
Jupyter-Notebook
Typora(version 1.2.3)导出 pdf 自定义水印的 frame.js 文件,详情可以查看:
量产部落sm2263xt开卡工具,支持b16b17颗粒
中国1公里分辨率月降水数据-最新全集.zip
云平台VPC.vsdx
CPA注会考试最新教材资料-最新发布.zip
分省最低工资标准面板数据最新集.zip
内容概要:本文档是一份详尽的Java面试题集,涵盖了许多常见的Java面试问题及详细的解答。内容涉及Java基础语法、面向对象编程、集合框架、网络编程、Spring框架等多个方面。每个问题不仅提供了答案,还解释了其背后的原理和技术细节。 适合人群:即将参加Java岗位面试的技术人员,特别是工作经验1-3年的软件工程师。 使用场景及目标:适用于准备Java面试,加深对Java核心技术的理解和掌握。通过练习这些问题,帮助面试者更好地理解和应对面试官的问题。 阅读建议:建议结合实际项目经验来阅读和练习这些问题,以便更好地理解和应用所学的知识点。同时,对于复杂的问题,可以通过编写代码来验证答案的正确性和理解深度。
层次分析法与熵值法工具包+数据案例+代码-最新.zip
音乐产品购物网站 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
NASA DEM中国30省高分辨率地形数据-精心整理.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。