packagecn.itcast.heima2;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;public classLockTest {public static voidmain(String[] args) {//TODO Auto-generated method stub
Output outputer = newLockTest.Output();new Thread(newRunnable() {
@Overridepublic voidrun() {//TODO Auto-generated method stub
while (true) {try{
Thread.sleep(10);
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
outputer.output("zhangxiaoxiang");
}
}
}).start();new Thread(newRunnable() {
@Overridepublic voidrun() {//TODO Auto-generated method stub
while (true) {try{
Thread.sleep(10);
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
outputer.output("lihuoming");
}
}
}).start();
}static classOutput {
Lock lock= newReentrantLock();public voidoutput(String name) {int len =name.length();
lock.lock();try{for (int i = 0; i < len; i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}finally{
lock.unlock();//保证即使发生了异常锁也能打开
}
}public static synchronized voidoutput2(String name) {int len =name.length();for (int i = 0; i < len; i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}
}
}