安卓两个线程传输数据依次进行_两个线程执行生产 * 两线程执行消费 * 依次交替循环...

import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /*  *  两个线程执行生产  *  两线程执行消费  *  依次交替循环  * lock的方法(类的方法) 针对多线程访问此方法 只允许一个线程执行  * */ public class IntputOutputDome2 { /** * @param args */ public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { public void run() { int x = 0; while(true){ if(x==0){ Res2.set("敬先林", "男"); } else{ Res2.set("张昊", "女"); } x = (x+1)%2; } } }); Thread t2 = new Thread(new Runnable() { public void run() { int x = 0; while(true){ if(x==0){ Res2.set("敬先林", "男"); } else{ Res2.set("张昊", "女"); } x = (x+1)%2; } } }); Thread t3 = new Thread(new Runnable() { public void run() { while(true) Res2.out(); } }); Thread t4 = new Thread(new Runnable() { public void run() { while(true) Res2.out(); } }); t1.start(); t2.start(); t3.start(); t4.start(); } } class Res2{ private static String name; private static String sex; private static boolean b = false; private static Lock lock = new ReentrantLock(); static Condition c1 = lock.newCondition(); static Condition c2 = lock.newCondition(); public static void set(String name1,String sex1){ lock.lock(); try { while(b){ c1.await(); } name=name1; sex=sex1; System.out.println(Thread.currentThread().getName()+"......生产......"+name+"----"+sex); b = true; c2.signal(); } catch (Exception e) { // TODO: handle exception } finally{ lock.unlock(); } } public static void out(){ lock.lock(); try { while(!b){ c2.await(); } System.out.println(Thread.currentThread().getName()+"......消费................."+name +"----"+sex); b = false; c1.signal(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ lock.unlock(); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值