1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
|
package org.vocano.java.tst; class ThreadDemo { public static void main(String[] args) { Buffer buf = new Buffer(); new Producer(buf).start(); new Consumer(buf).start(); new Consumer(buf).start(); } } class Producer extends Thread { private Buffer buf; public Producer(Buffer buf) { this.buf = buf; } public void run() { boolean odd = false; while(true) { synchronized(buf) { System.out.println("Producer get lock!"); if(buf.bFull) { System.out.println("Producer wait!!!"); try{buf.wait();}catch(Exception e) {} System.out.println("Producer wait return return return !!!!!!! "); } if(odd) { buf.name="jack"; try{Thread.sleep(100);}catch(Exception e) {} buf.sex="female"; } else { buf.name="lucy"; try{Thread.sleep(100);}catch(Exception e) {} buf.sex="male"; } buf.bFull = true; buf.notify(); System.out.println("Producer release lock!"); } odd = !odd; } } } class Consumer extends Thread { private Buffer buf; public Consumer(Buffer buf) { this.buf = buf; } public void run() { while(true) { synchronized(buf) { System.out.println("Consumer get lock!"); if(!buf.bFull) { System.out.println("Consumer wait!!!"); try{buf.wait();}catch(Exception e) {} System.out.println("Consumer wait return return return !!!!!!! "); } try{Thread.sleep(500);}catch(Exception e) {} System.out.println(buf.name + " : " + buf.sex); buf.bFull = false; buf.notify(); System.out.println("Consumer release lock!"); } } } } class Buffer { boolean bFull = false; String name = "Unkown"; String sex = "Unkown"; }
|
相关推荐
Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程...
由于用到了非托管资源,最简单的方式是把托管资源(WaitForm)放在工作线程,线程结束,窗体会自动销毁,不用自己写清理代码。 ShowDialog自动阻塞当前线程,这使它成为最优的解决方式。
网上有好多使用多线程弹出式等待窗口作为程序中较长时间后台运行提示的,但是做的都不完善,尤其是用 waitThread.Abort() 杀死线程时容易产生异常,进而出错。本程序是比较完善的改进,利用多线程弹出等待窗口,并...
c# 实现多线程的操作,轮询等待回调等异步操作,适合初学者的源码
开一个子线程来完成一个循环处理的工作,我在主线程中能灵活控制这个子线程的开始、暂停/继续、结束。
C#开发的基于多线程的等待窗体,winform。
c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程...
两种多线程等待窗体,第一种委托加事件实现,另一种等到时间自动关闭
5. Java多线程学习(四)等待/通知(wait/notify)机制 6. Java多线程学习(五)线程间通信知识点补充 7. Java多线程学习(六)Lock锁的使用 8. Java多线程学习(七)并发编程中一些问题 9. Java多线程学习(八...
多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程
为了给用户提供更好的体验,读取数据库等程序需要长时间来执行的操作,需要弹出一个等待界面。可以一边执行需要等待的操作,一边...本资源使用VS2017软件,VB.NET编程,异步委托和多线程编程实现背景透明的等待窗体。
程序处理比较耗时的操作时,界面经常卡住,给用户一种停止运行的错觉。给出一个等待窗体,能够增加程序的友好性,但是由于主程序在忙于处理数据,所以弹出的窗体最好用另外一个新的线程,来负责显示这个等待窗体。
主要介绍了java多线程wait,notify,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家一起来学习一下吧
多线程中的lock,Monitor_Wait和Monitor_Pulse,几种重要同步方法你一定要知道哦
java多线程设计wait.docx
分批取数 多线程数据处理
适合多线程,jdbc的方式获取数据
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
如果你没有正确地使用多线程,它会导致难以捉摸的问题,需要你花费大量时间去解决。因此,现代应用程序开发人员必须深入理解多线程。 本书是一本通俗易懂的C#多线程编程指南,通过70多个容易理解的示例,循序渐进地...
使用线程池管理多线程上传,包含了文件拆分,文件分片多线程上传,单文件上传。多线程执行任务等待管理。拒绝直接new Thread创建新线程导致的诸多问题