线程同步的方式有很多种,
synchronized 这个只是其中的一种方式,把这个关键字加在方法修饰或者具体的代码块上,就实现了相应的同步,但是我们有一个问题就是
哪些需要同步呐,举个例子:成员变量这个是公有的,必须要同步,不然多个线程同时操作必然会导致出现错误的情况,具体的同步应加在具体的调用方法上,方法中的局部变量时不需要同步的,凡是公有的部分都需要同步。
public class TestThreadSynchronized { public static void main(String[] args) { new TestThreadSynchronized().init(); } public void init(){ final Output output = new Output(); Thread thread = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } output.output("zhangxiaoxiang"); } } }); thread.start(); Thread thread1 = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } output.output("jiangming"); } } }); thread1.start(); } class Output{ public synchronized void output(String name){ int len = name.length(); //synchronized (this) { for (int i = 0; i < len; i++) { System.out.print(name.charAt(i)); } //} System.out.println(); } } }