简单wait(),notify()方法
1.两个类
public class Name{ public static void main(String[] args) throws InterruptedException {
User user=new User();
Nice nice =new Nice(user);
Ki ki =new Ki(user);
new Thread(nice).start();
new Thread(ki).start();
} } class Nice extends Thread{
Object object;
public Nice(Object object){
this.object=object;
} @Override
public void run() {
synchronized (object){
try {
System.out.println("aaaaaaaaaaaaa");
object.wait();
System.out.println("bbbbbbbbbbbbbbbb");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} class Ki extends Thread{ Object object; public Ki(Object object){
this.object=object;
} @Override
public void run() {
synchronized (object) {
object.notify();
}
}
}
2.一个类,两个方法
public class Name{ public static void main(String[] args) throws InterruptedException {
User user=new User();
Nice nice =new Nice(user);
nice.food();
nice.good();
} } class Nice{
Object object;
public Nice(Object object){
this.object=object;
}
public void food(){
Runnable runnable =new Runnable() {
@Override
public void run() {
synchronized (object){
try {
System.out.println("aaaaaaaaaaaaaaa");
object.wait();
System.out.println("bbbbbbbbbbbbbbbbbbbb");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}; Thread thread =new Thread(runnable);
thread.start();
} public void good(){
Runnable runnable2 =new Runnable() {
@Override
public void run() {
synchronized (object){
object.notify();
}
}
};
Thread thread =new Thread(runnable2);
thread.start();
} } 3.注意:
wait(),notify()要和synchronized一起使用,要获取到锁
简单wait(),notify()方法的更多相关文章
- Java使用wait() notify()方法操作共享资源
Java多个线程共享资源: 1)wait().notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写. 2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线 ...
- 并发编程之 wait notify 方法剖析
前言 2018 元旦快乐. 摘要: notify wait 如何使用? 为什么必须在同步块中? 使用 notify wait 实现一个简单的生产者消费者模型 底层实现原理 1. notify wait ...
- wait()、notify()方法原理,以及使用注意事项
wait.notify原理 在前面以经说到对象锁的本质,实际上是对象头的一个监视器锁的数据结构.这个结构如下: (图片来源于网络) 几个线程一起竞争对象的锁(enter),只有一个能成功(acquir ...
- Java精通并发-透过openjdk源码分析wait与notify方法的本地实现
上一次https://www.cnblogs.com/webor2006/p/11442551.html中通过openjdk从c++的底层来审视了ObjectMonitor的底层实现,这次继续来探究底 ...
- Java精通并发-notify方法详解及线程获取锁的方式分析
wait(): 在上一次https://www.cnblogs.com/webor2006/p/11404521.html中对于无参数的wait()方法的javadoc进行了解读,而它是调用了一个参数 ...
- Java使用wait() notify()方法操作共享资源详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Java多个线程共享资源: 1)wait().notify()和notifyAll()方法是本地方法,并且为final方 ...
- 从Guarded Block来看Java中的wait和notify方法
目录 预备知识 概览 线程同步 wait()方法 wait() wait(long timeout) wait(long timeout, int nanos) notify() & noti ...
- CocoaPods 的简单快速安装方法
CocoaPods 的简单快速安装方法(Setting up CocoaPods master repo 卡着不动,是因为淘宝镜像已经不能用了. 一.git clone方法安装cocoapods 镜像 ...
- java多线程详解(6)-线程间的通信wait及notify方法
Java多线程间的通信 本文提纲 一. 线程的几种状态 二. 线程间的相互作用 三.实例代码分析 一. 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:(1). 产生(New) ...
随机推荐
- 如何避免重复安装AppiumSetting、Unlock以及Android ime
老版本Appium(如1.4.16),找到如下路径(根据自己的安装路径找) C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\ ...
- stat /var/lib/docker/tmp/docker-builder234542842/usr/local/resource/noah_init.sql
参考:https://blog.csdn.net/andrew_wf/article/details/85202511 将noah_init.sql放到与Dockerfile同一目录
- 数据结构与算法——常用排序算法及其Java实现
冒泡排序 原理:依次比较相邻的两个数,将小数放在前面(左边),大数放在后面(右边),就像冒泡一样具体操作:第一趟,首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前 ...
- 【Android-GridView控件】 九宫格
效果图: 1.主界面布局 activity_main.xml GridView的三种属性: android:numColumns="" 每一行显示多少列 android:horiz ...
- Java学习 1.5——静态Static的作用与用法
在网上查阅资料,静态大约分为这几部分:修饰成员变量:修饰成员方法:静态代码块:静态导包,下面会用代码一一展示: 修饰成员变量: 一个类中,使用static修饰成员变量后,该变量变为全局变量,当再次ne ...
- Codeforces Round #346 (Div. 2) E题 并查集找环
E. New Reform Berland has n cities connected by m bidirectional roads. No road connects a city to it ...
- PHP mysqli_ping() 函数
定义和用法 mysqli_ping() 函数进行一个服务器连接,如果连接已断开则尝试重新连接. <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con= ...
- react-native-page-scrollview 的使用方法(实现酷炫的分页轮播效果,还支持自定义View)
react-native-page-scrollview 对ScrollView的封装,可以很方便的实现水平,垂直分页轮播效果.而且可以自定义分页宽高,和侧边View的旋转,透明度,大小等. 对于原生 ...
- spring-boot web项目常用配置
一.对用户输入query参数过滤空字符串 使用 WebBindingInitializer 来对string类型参数进行过滤,但是这种方式只能处理query参数不能处理body参数 代码例子: /** ...
- JavaScript闭包应用场合——控制前端接口轮训
很多人都知道JavaScript的闭包,也知道大致是一个什么意思,但是对于闭包的应用场合不是很清楚 最近在改造项目的过程之中修改前端接口轮训方式的时候用到了闭包驱动setTimeout来实现一个类似定 ...