线程同步(标志位看做成共享资源)
来源:互联网 发布:php上传文件原理 编辑:程序博客网 时间:2024/05/16 18:11
1 .
需求:
*自己写一个标志位
* flag = true 打印了数字了还没打印字母, 此时 应该 让数字等着 打印 字母
* false 打印了字母了 还没打印数字,此时 应让 字母等着, 打印数字
package com.qf.demo3;/** * 需求: * A12B34C56......Z5152 * * 两个线程 * 一个字母 * 一个数字 * *用到 线程间通信 * *wait *notify * * *money ==1000 == 0 * *自己写一个标志位 * flag = true 打印了数字了还没打印字母, 此时 应该 让数字等着 打印 字母 * false 打印了字母了 还没打印数字,此时 应让 字母等着, 打印数字 * */public class Test3 { public static void main(String[] args) { Resurce resurce = new Resurce(); Number number = new Number(resurce); Letter letter = new Letter(resurce); Thread thread = new Thread(number); Thread thread2 = new Thread(letter); thread.start(); thread2.start(); }}//true 打印了数字 还没打印字母// false 打印了 字母还没有打印数字class Resurce { boolean flag = true; //true 打印了数字 还没打印字母 // false 打印了 字母还没有打印数字 public synchronized void printNumber(int num){ // 1判断是否应该wait if(flag == true){ try { this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 如果没有进入wait 目前来说是false 应该打印数字 System.out.print(num+""+(num+1));// //改变状态 flag = true; this.notify(); } public synchronized void printLetter(int letter){ if(flag == false){ try { this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 如果没有进入 wait 证明现在是true ,应该打印字母 System.out.print((char)letter); // 已经打印过了字母了. 应该吧状态改变成为false flag = false; this.notify(); }}class Number implements Runnable{ Resurce resurce; public Number(Resurce resurce) { this.resurce = resurce; } public void run() { for (int i = 1; i <= 52; i+=2) { resurce.printNumber(i); } }}class Letter implements Runnable{ Resurce resurce; public Letter(Resurce resurce) { this.resurce = resurce; } public void run() { for (int i = 0; i < 26; i++) { resurce.printLetter(65+i); } }}
阅读全文
0 0
- 线程同步(标志位看做成共享资源)
- 线程并发,用标志位同步时要小心
- 线程并发共享资源同步原理解析1
- .net Mutex 共享资源同步 类似线程锁机制
- 最简单生产消费者模型理解(线程同步,共享资源,信号
- Java之【线程通信】--标志位练习
- 从删除邮件小页面看flag标志位
- 生产者消费者看线程同步
- 位标志
- 标志位
- 标志位
- 标志位
- 线程安全与共享资源
- 线程共享资源的问题
- 线程安全与共享资源
- 线程中的共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
- 激活函数
- 83. Remove Duplicates from Sorted List (链表)
- C++11新特性示例
- VS2010暂停编译界面
- 线程同步(标志位看做成共享资源)
- echarts 百度图表
- Laravel设置timezone时区
- ebay产品名称分析
- HTML语义化
- JavaScript加载速度倍增的方法。
- JQery图片淡入淡出效果案例
- 目录整理
- C++中的虚函数(virtual function)