#<center> Java 语言线程
来源:互联网 发布:新网互联域名管理平台 编辑:程序博客网 时间:2024/06/12 05:07
Java 语言线程
Java多线程的基础知识,如线程的启动、优先级等,网上有很多资料介绍,这里就不再赘述。这篇文章主要介绍线程的互斥以及线程的协作。
线程互斥
线程互斥又叫共享互斥,其背后的本质是JVM的内存模型,JVM内存模型本身并不非常复杂,有兴趣的同学可以自行google。理解JVM内存模型对深入理解java多线程程序有非常大的帮助。简单来说Java中的线程互斥使用关键字synchronized来实现。当一个方法使用synchronize来修饰的时候表示这个方法在一个时间段类只允许一个线程访问。synchronize既能够修饰方法,此时表示该方法为同步方法。也能够修饰语句块,此时表示该语句块为同步语句块。他们表示的含义是相同的,即表示修饰的方法或者语句块内的语句在同一时间段内,只允许一个线程访问。
线程协作
Java中线程的协作可以通过wait/notify/notifyAll以及中断的这几种方式进行,中断暂且不提,今天终点介绍wait/notify/notifyAll的含义机及其使用。
在介绍wait几个概念之前先介绍wait set即等待集合或者等待队列。在java中所有实例都有一个wait set,它是一个在执行该实例的wait方法时、操作停止的线程的集合,类似线程休息室,每个实例都有。线程进入wait
set之后除非其他线程以notify/notifyAll/interrupt唤醒或者wait到期,线程才会推出wait set。
- wait(),线程调用wait方法之后,便进入wait set。需要注意的是想要执行wait方法,必需获取锁定,换句话说就是必需在同步语句块或者同步方法中执行,否则会抛出IllegalMonitorStateExeception的异常。这点对于notify以及notifyAll方法而言也是一样的。
- notify(),从实例的wait set中唤醒一个线程。线程被唤醒之后便退出wait set。
- notifyAll(),从实例的wait set中唤醒所有线程,所有线程退出wait set。
在使用的时候尽可能使用notifyAll方法,避免使用notify方法。
1 0
- #<center> Java 语言线程
- 线程安全(Java语言)
- java语言的线程
- java语言的线程安全级别
- java语言的线程安全级别
- Java语言中的线程安全
- Java GUI之FlowLayout.CENTER
- Java测试框架Automation Center
- Center
- 【Java 语言】Java 多线程 一 ( 线程启动 | 线程停止 )
- 关于Java语言中的线程安全问题
- java语言的线程安全volatile用法
- 使用Java 编程语言实现线程
- Java语言基础之线程同步
- Java语言中的线程状态转换
- 窗体居中 Frame center in java
- Linux center os7 java环境搭建
- 准备开博讨论MCML(Media Center Markup language)语言
- RSA攻击----已知公钥n,e私钥d
- epoll详细工作原理
- 【LeetCode】 406. Queue Reconstruction by Height
- 音频和语音处理领域CCF期刊和杂志
- 计算几何 学习笔记
- #<center> Java 语言线程
- Mysql分区
- VC++数据类型转换大全
- 2017容器发展趋势预测:更快速的采纳和创新
- 【JAVA 17.1】
- 【JAVA 17.2】+ IO
- 【JAVA 17.5】+ IO
- epoll详解
- 远程访问mysql管理