线程同步的方式有很多种,
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();
}
}
}