您的位置:首页 > 编程语言 > Java开发

Java核心内库-线程-线程同步-同步方法

2016-11-30 15:05 232 查看
同步方法:

使用
synchronized
修饰的方法,就叫做同步方法。保证A线程执行该方法的时候,其他线程只能在方法外等着。

synchronized public void doWork(){}


同步锁是谁:

对于
非static
方法,同步锁就是
this


对于
static
方法,我们使用当前方法所在类的字节码对象(Apple2.class)

class Apple2 implements Runnable{
private int num = 50; //苹果总数
@Override
public void run() {
for (int i=0;i<50;i++){
eat();
}
}

synchronized private void eat(){
if (num>0){
System.out.println(Thread.currentThread().getName()+"吃了编号为"+num+"的苹果");
try {
Thread.sleep(10); // 此时是为了模拟网络延迟
} catch (InterruptedException e) {
e.printStackTrace();
}
num--;
}
}
}
public class Main {
public static void main(String[] args){
// 创建三个线程(同学)吃苹果
Apple2 a = new Apple2();
new Thread(a,"小A").start();
new Thread(a,"小B").start();
new Thread(a,"小C").start();
}
}


synchronized的优劣

好处:保证了多线程并发访问时的同步操作,避免线程安全性问题。

缺点:使用synchronized的方法/代码块 的性能比不使用要低一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: