import java.util.concurrent.locks.ReentrantLock;/*** ReentrantLock 测试用代码** @author TF12778 2019/10/21 15:30*/
public class ReentrantLockTest extends Thread {private static int count = 100000;// 10000000;public static ReentrantLock lock = new ReentrantLock();public static int i = 0;public ReentrantLockTest(String name) {super.setName(name);}/*** 1。 当使用ReentrantLock锁的时候,不论任何时候,输出结果都是200000* 2。 当不使用ReentrantLock锁的时候,输出结果可能不等于200000,刚刚测试了一把是199988*/@Overridepublic void run() {for (int j = 0; j < count; j++) {lock.lock();try {System.out.println(this.getName() + " " + i);i++;} finally {lock.unlock();}}}/*** @param args* @throws InterruptedException*/public static void main(String[] args) throws InterruptedException {ReentrantLockTest test1 = new ReentrantLockTest("thread1");ReentrantLockTest test2 = new ReentrantLockTest("thread2");test1.start();test2.start();test1.join(); // 先执行子线程,再执行主线程test2.join(); // 先执行子线程,再执行主线程System.out.println("最后的执行结果:" + i); // 执行主线程}
}