当前位置: 代码迷 >> 综合 >> ReentrantLock 实际测试
  详细解决方案

ReentrantLock 实际测试

热度:36   发布时间:2023-12-15 00:55:48.0
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); // 执行主线程}
}