[Java] 纯文本查看 复制代码
public class Test implements Runnable {
public synchronized void get() {//get方法获取this锁
System.out.println("name:" + Thread.currentThread().getName() + " get();");
set();//get方法调用set方法,set方法也可以获取到this锁,这就是重入锁
}
public synchronized void set() {
System.out.println("name:" + Thread.currentThread().getName() + " set();");
}
@Override
public void run() {
get();
}
public static void main(String[] args) {
Test ss = new Test();
new Thread(ss).start();
new Thread(ss).start();
new Thread(ss).start();
new Thread(ss).start();
}
}
[Java] 纯文本查看 复制代码
public class Test02 extends Thread {
ReentrantLock lock = new ReentrantLock();
public void get() {
lock.lock();//GET方法获取锁
System.out.println(Thread.currentThread().getId());
set();//GET方法调用SET方法,SET方法也获取同样的锁,这把锁lock就是重入锁
lock.unlock();
}
public void set() {
lock.lock();
System.out.println(Thread.currentThread().getId());
lock.unlock();
}
@Override
public void run() {
get();
}
public static void main(String[] args) {
Test ss = new Test();
new Thread(ss).start();
new Thread(ss).start();
new Thread(ss).start();
}
}