java奇偶数循环_java两线程交替打印奇偶数

public classOddEven {intlen;int[] num;int idx = 0;final Boolean lock = false;

ReentrantLock rlock= newReentrantLock();public OddEven(intlen) {this.len =len;

num= new int[len];for (int i = 0; i < len; i++) {

num[i]=i;

}

idx= 0;

}class Odd implementsRunnable {

@Overridepublic voidrun() {while(idx > 1 << 1) != num[idx]){System.out.print(num[idx]);System.out.println("--Odd");//++idx;//}//}

rlock.lock();if (idx < len && (num[idx] >> 1 << 1) !=num[idx]){

System.out.print(num[idx]);

System.out.println("--Odd");++idx;

}

rlock.unlock();

}

}

}class Even implementsRunnable {

@Overridepublic voidrun() {while(idx > 1 << 1) == num[idx]){//System.out.print(num[idx]);//System.out.println("--Even");//++idx;//}//}

rlock.lock();if (idx < len && (num[idx] >> 1 << 1) ==num[idx]){

System.out.print(num[idx]);

System.out.println("--Even");++idx;

}

rlock.unlock();

}

}

}public void execute() {long begin =System.currentTimeMillis();

Thread odd= new Thread(newOdd());

Thread even= new Thread(newEven());

odd.start();

even.start();try{

odd.join();

even.join();

}catch(InterruptedException e) {

e.printStackTrace();

System.out.println("被打断");

}long end =System.currentTimeMillis();

System.out.println("\ntotal time: " + (end -begin));

}public static voidmain(String[] args) {

OddEven oe= new OddEven(100000);

oe.execute();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值