任务描述
本关任务:使用Lock,实现对于某一块代码的互斥访问。
package lam;
import java.util.concurrent.*;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class MyThread {
public static void main(String[] args) {
final Insert insert =new Insert();
//用了匿名内部类的方法
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
insert.insert(Thread.currentThread());
}
}).start();;
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
insert.insert(Thread.currentThread());
}
},"t2");
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
insert.insert(Thread.currentThread());
}
});
// t1.start();
t2.start();
t3.start();
}
}
class Insert{
public static int num;
public Lock lock=new ReentrantLock();
public void insert(Thread thread) {
lock.lock();
try {
System.out.println(thread.getName()+"得到了锁");
for(int i=0;i<5;i++) {
num++;
System.out.println(num);
}
}catch(Exception e) {
}finally {
System.out.println(thread.getName()+"释放了锁");
lock.unlock();
}
}
}
本题是educoder上的一个题,然后自己重新从头敲了一遍,得到新的理解就是关于匿名内部类的,再原基础的代码上增加了自己的一点点想法与理解。