package com.test.lock;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockDemo {
//创建lock,ReentrantLock是Lock的唯一实现类
private Lock lock = new ReentrantLock();
public void method(){
lock.lock();//获取锁
try {
System.out.println(Thread.currentThread().getName() + "拿到了锁");
System.out.println(Thread.currentThread().getName() + "do something ...");
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + "do something end...");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println(Thread.currentThread().getName() + "释放了锁!");
lock.unlock();//释放锁
}
}
//测试
public static void main(String[] args) {
// 创建若干个线程
ExecutorService service = Executors.newCachedThreadPool();
// 提交20个任务
for (int i = 0; i < 20; i++) {
service.execute(new Runnable() {
@Override
public void run() {
new LockDemo().method();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
// 释放线程池中的线程
service.shutdown();
}
}
java Lock应用示例1
最新推荐文章于 2023-04-20 19:43:49 发布