ReentrantLock:
1 /** 2 * ReentrantLock测试逻辑类 3 */ 4 public class MyService { 5 private Lock lock = new ReentrantLock();//获取锁对象 6 7 public void testMethod() { 8 lock.lock(); 9 for (int i = 0; i < 5; i++) {10 System.out.println(Thread.currentThread().getName() + "----" + (i+1));11 }12 lock.unlock();13 }14 }
1 /** 2 * ReentrantLock测试逻辑线程 3 */ 4 public class MyThread extends Thread{ 5 6 private MyService service; 7 8 public MyThread(MyService service) { 9 this.service = service;10 this.start();11 }12 13 @Override14 public void run() {15 service.testMethod();16 }17 }
1 /** 2 * 测试类 3 */ 4 public class Run { 5 6 public static void main(String[] args) { 7 MyService service = new MyService(); 8 9 //实例化 并且实例化的时候默认就调用start()方法启动10 MyThread thread1 = new MyThread(service);11 MyThread thread2 = new MyThread(service);12 MyThread thread3 = new MyThread(service);13 MyThread thread4 = new MyThread(service);14 }15 }
运行结果如下: