package com.wucj.service;
import lombok.SneakyThrows;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* \* Created with IntelliJ IDEA.
* \* @author: wucj
* \* @date: 2020/4/4 21:21
* \* @description:
* \
*/
public class CustomerReentrantLockTest {
private Logger log = LoggerFactory.getLogger(this.getClass());
public void reentrantLock() throws InterruptedException {
final Lock lock = new ReentrantLock();
class TestReentrantLock extends Thread{
@SneakyThrows
@Override
public void run() {
while (true){
lock.lock();
try{
Thread.sleep(1000);
log.info("线程:{}获取到执行权限",Thread.currentThread().getName());
Thread.sleep(1000);
}finally {
lock.unlock();
}
Thread.sleep(1000);
}
}
}
for (int i = 0; i < 10; i++) {
TestReentrantLock testReentrantLock = new TestReentrantLock();
testReentrantLock.setDaemon(true);
testReentrantLock.start();
}
for (int i = 0; i < 10; i++) {
Thread.sleep(1000);
log.info("主线程:{}打印",Thread.currentThread().getName());
}
}
@SneakyThrows
public static void main(String[] args) {
CustomerReentrantLockTest customerReentrantLockTest = new CustomerReentrantLockTest();
customerReentrantLockTest.reentrantLock();;
}
}
21:28:06.238 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:06.238 [Thread-0] INFO com.wucj.service.CustomerReentrantLockTest - 线程:Thread-0获取到执行权限
21:28:07.247 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:08.251 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:08.251 [Thread-1] INFO com.wucj.service.CustomerReentrantLockTest - 线程:Thread-1获取到执行权限
21:28:09.254 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:10.256 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:10.256 [Thread-2] INFO com.wucj.service.CustomerReentrantLockTest - 线程:Thread-2获取到执行权限
21:28:11.262 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:12.267 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:12.267 [Thread-3] INFO com.wucj.service.CustomerReentrantLockTest - 线程:Thread-3获取到执行权限
21:28:13.269 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:14.272 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印
21:28:14.272 [Thread-4] INFO com.wucj.service.CustomerReentrantLockTest - 线程:Thread-4获取到执行权限
21:28:15.277 [main] INFO com.wucj.service.CustomerReentrantLockTest - 主线程:main打印