JAVA 虚拟机规范之第17章 线程和锁
来源:互联网 发布:md5算法是不是对称加密 编辑:程序博客网 时间:2024/06/08 00:16
尽管前面章节都是在讲单个语句或表达式的一次执行行为,即单线程内的执行情况,其实,jvm支持多个线程同时运行。这些线程相互独立的操作共享主内存中的数据(数值和对象)。多线程可能运行在多处理器上,或者时间分片的单处理器上,或者时间分片的多处理器上。
线程用Thread类表示。用户想要创建一个线程,只有一个方法:创建一个Thread类的对象;每个线程都是一个Thread类的对象。当对象中的start()方法被调用时,线程开始执行。
如果没有正确的处理多线程之间的同步,多线程的执行结果可能让人困惑甚至是反常的。这章阐述多线程程序的语义(Semantics),这些语义包括一些规则,这些规则是用来说明,对于多线程同时操作的共享内存区,读操作得到的数值究竟是什么的数值。As the specification is similar to the memory models for different hardware architectures, these semantics are known as the Java programming language memory model.在不引起歧义的情况下,我们将这些规则简称为“内存模型”。
这些语义不是规定多线程程序应该如何执行,而是说明多线程程序允许的行为。任何能产生被允许的行为的多线程执行策略都是可接受的执行策略。
17.1 同步
Java语言提供多种线程间通信的机制,其中最基本的方式称为“同步”,该方式通过监视器(Monitor)实现。Java中的每个对象都关联一个监视器,线程可以对监视器执行加锁(Lock)或解锁(Unlock)操作。某一时刻,只有一个线程持有一个监视器的锁,而其他试图对该监视器加锁的线程都会被阻塞,直到它们能够拿到监视器的锁。一个线程可以对某个监视器加锁多次;每次解锁操作则释开一个锁。
由synchronized修饰的方法(详见8.4.3.6节),一旦被调用,会自动执行加锁操作,只有加锁完成才会执行方法体内的语句。
to be continued…
- JAVA 虚拟机规范之第17章 线程和锁
- JAVA程序规范和JAVA虚拟机规范
- java线程和锁的规范
- Java虚拟机之线程同步
- Java虚拟机之线程安全
- java虚拟机学习之线程共享内存区和线程私有区
- java虚拟机规范
- Java 7 虚拟机规范
- Java虚拟机规范读书笔记
- 探索深入理解java虚拟机之Java内存模型和线程(7)
- windows 本地线程和java虚拟机线程区别
- 《Java虚拟机规范》阅读(一):简介和Java虚拟机结构
- java虚拟机规范第二版
- Java虚拟机规范----JVM体系结构
- JAVA SE 7虚拟机规范
- Java Servlet 规范 第7章 会话
- 《深入Java虚拟机学习笔记》- 第5章 Java虚拟机
- Java编程规范之命名规范和惯例
- 康托展开
- 浅析Android中的消息机制
- redis-2.8.19.tar.gz安装和启动脚本
- spring aop记录日志
- 多进程并发服务器编程
- JAVA 虚拟机规范之第17章 线程和锁
- #define和预处理指令的使用
- 跳槽意愿报告:跳槽不太难,钱是原动力
- 【转】【UNITY3D 游戏开发之六】UNITY 协程COROUTINE与INVOKE
- MySQL常用语句大全
- 碰撞有趣风格 简约混搭风格美宅
- java反射
- 素数筛选法
- UDP服务器端和客户端程序设计