线程通信

来源:互联网 发布:js控制disabled的属性 编辑:程序博客网 时间:2024/04/29 02:30
package qzu.guitai;/** * 本程序实现子线程执行10次,然后到主线程执行100次,子线程和主线程每个执行五十次。 * @author Administrator * */public class TraditionalThreadSynchronized {public static void main(String[] args) {new TraditionalThreadSynchronized().init();}/** * 该方法创建一个子线程,子线程中循环执行五十次调用sub方法和循环五十次调用main方法 */public void init(){final Business business=new Business();new Thread(){public void run(){for (int i = 0; i < 50; i++) {business.sub();}}}.start();for (int i = 0; i < 50; i++) {business.main();}}/** * 该类的sub方法实现打印10次,main方法打印100次,两个方法都采用了同步锁来实现信息通信 * @author 黄贤亨 * */class Business{private boolean flag=true;public synchronized void sub(){if(flag)try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int j = 0; j < 10; j++) {System.out.println(Thread.currentThread().getName()+ "==" +j);}flag=true;this.notify();}public synchronized void main(){if(!flag)try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int j = 0; j < 100; j++) {System.out.println(Thread.currentThread().getName()+ "-----" + j);}flag=false;this.notify();}}}


0 0
原创粉丝点击