Outputer.java
package com.entel.research; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Outputer { Lock lock = new ReentrantLock(); public void output(String name) { int length = name.length(); lock.lock(); try { for(int i=0;i<length;i++) { System.out.print(name.charAt(i)); } System.out.println(); } finally { lock.unlock(); } } }
JunitOutputer.java
package com.entel.research; public class JunitOutputer { public static void main(String[] args) { final Outputer outputer = new Outputer(); new Thread(new Runnable() { @Override public void run() { while(true) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } outputer.output("LiJian"); } } }).start(); new Thread(new Runnable() { @Override public void run() { while(true) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } outputer.output("ZhangSan"); } } }).start(); } }