package com.freeflying.thread.reentrantlock;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ReentrantLockReleaseSynch {
public static void main(String[] args) {
ReentrantLockReleaseSynchEx synchEx=new ReentrantLockReleaseSynchEx();
ReentrantLockReleaseSynchThread thread1=new ReentrantLockReleaseSynchThread(synchEx);
ReentrantLockReleaseSynchThread thread2=new ReentrantLockReleaseSynchThread(synchEx);
ReentrantLockReleaseSynchThread thread3=new ReentrantLockReleaseSynchThread(synchEx);
thread1.start();
thread2.start();
thread3.start();
}
}
class ReentrantLockReleaseSynchEx{
private Lock lock=new ReentrantLock();
public void testMethod() {
lock.lock();
for (int i = 0; i < 5; i++) {
System.out.println("ThreadName="+Thread.currentThread().getName()+"--"+i);
}
lock.unlock();
}
}
class ReentrantLockReleaseSynchThread extends Thread{
private ReentrantLockReleaseSynchEx synchEx;
public ReentrantLockReleaseSynchThread(ReentrantLockReleaseSynchEx synchEx) {
this.synchEx = synchEx;
}
@Override
public void run() {
synchEx.testMethod();
}
}
结果
ThreadName=Thread-1--0
ThreadName=Thread-1--1
ThreadName=Thread-1--2
ThreadName=Thread-1--3
ThreadName=Thread-1--4
ThreadName=Thread-2--0
ThreadName=Thread-2--1
ThreadName=Thread-2--2
ThreadName=Thread-2--3
ThreadName=Thread-2--4
ThreadName=Thread-0--0
ThreadName=Thread-0--1
ThreadName=Thread-0--2
ThreadName=Thread-0--3
ThreadName=Thread-0--4