第一种 给方法前面 加 synchronized
示例:
public synchronized void out2(String name) { int length = name.length(); for (int i = 0; i < length; i++) { System.out.print(name.charAt(i)); } System.out.println(); }
第二种 在方法里面加synchronized块
示例:
public void out(String name) { int length = name.length(); synchronized (Outputer.class) { for (int i = 0; i < length; i++) { System.out.print(name.charAt(i)); } System.out.println(); } }
第三种
java.util.concurrent.locks.Lock
给代码上锁
示例:
public void output(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(); } }