Java多线程--线程间通信
来源:互联网 发布:php 电商系统 编辑:程序博客网 时间:2024/06/03 05:06
等待/通知机制
1 等待/通知机制的实现
- wait()
- 使当前执行代码的线程进行等待,该方法用来将当前线程置入“预执行队列”中,并且在wait方法所在的代码行停止执行,直到接到通知或被中断为止
- 在执行wait()方法后,当前线程释放锁
- notify()
- 用来通知那些可能等待该对象的对象锁的其他线程,如果有多个线程等待,则由线程规划器随机挑选
- 并不马上释放对象锁,需要等到执行notify()方法的线程将程序执行完,也就是退出synchornized代码块后
2 方法wait()锁释放和方法notify()锁不释放
当方法wait()被执行完后,锁会被自动释放;当方法notify()被执行完后,锁不会被自动释放
3 当interrupt()方法遇到wait()方法
- 当线程处于wait状态,调用线程对象的interrupt()方法会出现InterruptedException异常
4 只通知一个线程
调用notify()方法一次只随机通知一个线程进行唤醒
多次调用notify()方法,会随机将等待wait状态的线程进行唤醒
5 唤醒所有线程
使用notifyAll()方法,唤醒所有的线程
6 wait(long)方法
等待某一段时间内是否有线程对锁进行唤醒,如果超过这个时间就自动唤醒
方法join()的使用
使所属的线程对象x正常执行run()方法中的任务,而是当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行线程z后边的代码
1 join()和异常
在join()过程中,如果当前线程对象被中断,则当前线程出现异常
2 方法join(long)的使用
通过参数设置等待时间
3 方法join(long)和sleep(long)的区别
方法join(long)在内部是使用wait(long)来实现的,所以其具有释放锁的特性;而sleep(long)不会释放锁
ThreadLocal的使用
实现每个线程都有自己的共享变量,每个线程绑定自己的值
1 解决get()返回null值问题
继承ThreadLocal类,覆盖initialValue方法
InheritableThreadLocal的使用
可以在子线程中取得父线程继承下来的值
可以在继承的同时对值进行进一步的处理
0 0
- Java多线程--线程间通信
- java多线程线程通信
- Java 多线程:线程通信
- 【Java 多线程】Java 线程间通信
- Java的多线程-线程间的通信
- java多线程与线程间通信
- java多线程与线程间通信
- java多线程之线程间同步通信
- java多线程之线程间通信
- java多线程与线程间通信
- java多线程与线程间通信
- Java多线程-线程间通信Demo
- java多线程与线程间通信
- Java多线程核心技术(三):线程间通信
- java多线程(三)线程间通信
- 【Java多线程】线程间的通信
- Java多线程-线程间的通信
- java多线程与线程间通信
- 数字证书原理(ssl,https)
- (一)Linux shell常见命令操作以及问题解决
- C/C++ Windows API——注册表
- 牛客网-二叉搜索树转换成一个排序的双向链表
- 特征值与特征向量
- Java多线程--线程间通信
- Fragment的生命周期
- Centos 安装lamp环境(php5.6)
- linux配置永久ip不生效解决方法
- IGraphBuilder
- js面向对象编程
- Oracle 11g学习笔记--角色
- LogisticRegression Python实现
- <第一章>Node 学习笔记 |>Mac Node安装<|