ReentrantLock类实现同步:
测试1:
1)创建类MyService
package hzb;
import java.util.concurrent.locks.ReentrantLock;
public class MyService {
ReentrantLock lock = new ReentrantLock();
public void method1() {
lock.lock();
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " " + (i + 1));
}
lock.unlock();
}
}
2)创建类MyThread
package hzb;
public class MyThread extends Thread {
private MyService myService;
public MyThread(MyService myService) {
super();
this.myService = myService;
}
@Override
public void run() {
myService.method1();
}
}
3)创建类Test
package hzb;
public class Test {
public static void main(String[] args) {
MyService myService = new MyService();
MyThread mythread1 = new MyThread(myService);
mythread1.start();
MyThread mythread2 = new MyThread(myService);
mythread2.start();
MyThread mythread3 = new MyThread(myService);
mythread3.start();
MyThread mythread4 = new MyThread(myService);
mythread4.start();
MyThread mythread5 = new MyThread(myService);
mythread5.start();
}
}
得到的结果如图所示:
由结果可以看出,当前线程打印完毕后,将锁释放,其他线程才能继续打印。