练习题之Wait/Notify
方案一:
public class PrintABC {
public static void main(String[] args) {
AtomicInteger synObj = new AtomicInteger();
Runnable r = new ThreadModel(synObj);
new Thread(r,"A").start();
new Thread(r,"B").start();
new Thread(r,"C").start();
}
} public class ThreadModel implements Runnable {
public volatile AtomicInteger ato; public ThreadModel(AtomicInteger ato) {
this.ato = ato;
} public void run() {
for(int i=;i<;i++) {
synchronized(ato) {
if(ato.get()%==) {
System.out.println("A);
ato.set(ato.get()+);
ato.notifyAll();
} else if(ato.get()%==) {
System.out.println("B);
ato.set(ato.get()+);
ato.notifyAll();
} else if(ato.get()%==) {
System.out.println("C);
ato.set(ato.get()+);
ato.notifyAll();
} else {
ato.wait();
}
}
}
}
}
方案二:
public class printABC { public static void main(String [] args) {
AtomicInteger ato = new AtomicInteger();
ThreadModel modelA = new ThreadModel(ato,"A",);
ThreadModel modelB = new ThreadModel(ato,"B",);
ThreadModel modelC = new ThreadModel(ato,"C",);
new Thread(modelA).start();
new Thread(modelB).start();
new Thread(modelC).start();
} } public class ThreadModel { private AtomicInteger ato;
private String printChar;
private int flag;
private int count = ;
public ThreadModel(AtomicInteger ato,String printChar,int flag) {
this.ato = ato;
this.printChar = printChar;
this.flag = flag;
} public void run() {
synchronized(ato) {
while(true) {
if(ato.get()%==flag) {
System.out.println(printChar);
ato.set(ato.get()+);
ato.notifyAll();
count++;
if(count==) {
break;
}
}else {
ato.wait();
}
}
}
} }
练习题之Wait/Notify的更多相关文章
- Thread Object wait() notify()基本
package com.thread.test.thread; import java.util.ArrayDeque; import java.util.Queue; import java.uti ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- shell 脚本之 shell 练习题汇总
整理了一些 shell 相关的练习题,记录到这里. 1. 请按照这样的日期格式 xxxx-xx-xx 每日生成一个文件,例如:今天生成的文件为 2013-09-23.log, 并且把磁盘的使用情况写到 ...
- 如何在 Java 中正确使用 wait, notify 和 notifyAll(转)
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视.本文对这些关键字的使用进行了描述. 在 Java 中可以用 wait ...
- MySQL练习题
MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号和平均成 ...
- MySQL练习题参考答案
MySQL练习题参考答案 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[ ...
- mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风
(-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...
- java多线程wait notify join
wait notify 几个注意点: wait 与 notify/notifyAll 方法必须在同步代码块中使用,即要先对调用对象加锁. 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进 ...
- 【Java并发系列02】Object的wait()、notify()、notifyAll()方法使用
一.前言 对于并发编程而言,除了Thread以外,对Object对象的wati和notify对象也应该深入了解其用法,虽然知识点不多. 二.线程安全基本知识 首先应该记住以下基本点,先背下来也无妨: ...
随机推荐
- HTML5每日一练之details展开收缩标签的应用
details标签的出现,为我们带来了更好的用户体验,不必为这种收缩展开的效果再编写JS来实现.注:目前仅Chrome支持此标签. details有一个新增加的子标签——summary,当鼠标点击su ...
- XML学习笔记(2)--dom4j操作XML
1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...
- AppDelegate 、UIApplication 的用法
转载自 http://blog.chinaunix.net/uid-26768267-id-3300042.html //AppDelegate.h 头文件 #import <UIKit/UI ...
- C#中ArrayList和string,string[]数组的转换
转载原地址: http://www.cnblogs.com/nextsoft/articles/2218689.html 1.ArrarList 转换为 string[] : ArrayList li ...
- LCA + 二分(倍增)
两个最近的点u和v的最近的公共的祖先称为最近公共祖先(LCA).普通的LCA算法,每算一次LCA的时间复杂度为线性o(n); 这里讲LCA + 二分的方法.首先对于任意的节点v,利用其父节点的信息,可 ...
- MFC编辑框换行实现
MFC中换行实现 在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即“\r\n”,用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性: ...
- js正则验证手机号
var regp = /^(\+86|86|)1[3458][0-9]{9}$/; if(str==""){ var flag = checkstatus(obj,"&q ...
- CF:322D - Ciel and Duel 贪心 或者 DP 我用的贪心 。。难道sort跟qsort是不一样的么?
D. Ciel and Duel time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- MEF 编程指南(五):延迟导出
在组合部件的时候,导入将会触发部件(部件集合)的实例化,为原始的请求部件公开必要的导出需求.对于有些应用程序,推迟实例化 - 并且防止递归组合图(Recursive Composition Down ...
- Codeforces Round #192 (Div. 1) C. Graph Reconstruction 随机化
C. Graph Reconstruction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/3 ...