当一个方法被关键字synchronized声明后,就只允许一个线程来操作这个方法。也就是指一次只能让一个线程运行。
package com.zwq.impl;
public class SynThread {
public static void main(String[] args) {
//创建SynThreadTest类的实例对象
SynThreadTest synThreadTest = new SynThreadTest();
//创建线程并启动线程
new Thread(synThreadTest).start();
System.out.println(synThreadTest.call());
}
}
class SynThreadTest implements Runnable{
private int x;
private int y;
//定义SynThreadTest的同步方法
//重写Runnable接口的run()方法,声明synchronized
public synchronized void run() {
for(int i=0;i<5;i++){
x++;
y++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+":x="+x+",y="+y+"\t"+i);
}
}
//自定义方法,并声明synchrocized
public synchronized String call(){
String name = Thread.currentThread().getName();
return "hellow "+name;
}
}
来源:https://www.cnblogs.com/zjwia/archive/2013/03/15/2961746.html