两线程奇偶数打印
两个线程交替打印0~100的奇偶数:
偶线程:0
奇线程:1
偶线程:2
奇线程:3
…
偶线程:100
此处我使用的是lock锁来实现的
线程A负责打印偶线程数据:
package org.activemq.test;
public class MyThreadA extends Thread{
private MyService myService;
public MyThreadA(MyService myService) {
this.myService = myService;
}
public void run(){
myService.testPrintDouble();
}
}
线程B负责打印奇线程数据:
package org.activemq.test;
public class MyThreadB extends Thread{
private MyService myService;
public MyThreadB(MyService myService) {
this.myService = myService;
}
public void run(){
myService.testPrintSingle();
}
}
Service类:
package org.activemq.test;
import java.util.concurrent.locks.ReentrantLock;
public class MyService {
// 定义全局变量
private static int VALUE = 0;
private ReentrantLock lock = new ReentrantLock();
public void testPrintDouble() {
while (VALUE <= 100) {
// 获取锁
lock.lock();
if (VALUE % 2 == 0) {
System.out.println("偶线程:" + VALUE);
VALUE ++;
}
// 释放锁
lock.unlock();
}
}
public void testPrintSingle(){
while(VALUE < 100){
lock.lock();
if (VALUE % 2 == 1){
System.out.println("奇线程: "+ VALUE);
VALUE ++;
}
lock.unlock();
}
}
}
我的测试类如下:
package org.activemq.test;
public class MyTest {
public static void main(String[] args) {
MyService myService = new MyService();
MyThreadA myThreadA = new MyThreadA(myService);
MyThreadB myThreadB = new MyThreadB(myService);
myThreadA.start();
myThreadB.start();
}
}
第一次发表自己的代码,欢迎各路好友批评指正 ^ _ ^