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

java中线程的同步和死锁案例分析

2016-09-23 20:06 627 查看
线程的同步主要为确保线路数据安全性

 
多线程共享数据的安全问题,使用同步解决

 1:同步代码块,设置一个标记对象,此例中用了object作为标记对象
 2:同步方法:同步的是当前对象
 public
synchronized void method(){

要同步的操作
}
3:同步的缺点,同步代码会带来性能降低的问题,能提高数据的安全性。
同步准则:当编写synchronized块时,以下几个基本准则可以遵守,在避免
死锁和性能风险方面有很大的帮助
1:使代码块保持简短。把不随线程变化的预处理和后处理移出synchronized块
2:不要阻塞。如InputStream.read().
3:在持有锁的时候,不要对其他对象调用方法(避免死锁问题).
 @author
Jasen


同步的第一种方法使用:

class MyThread implements Runnable{
Object object=new Object(); //同步标记对象
public void run() {
//同步代码块
synchronized(object){ //object可以使用this代替
同步代码区
}
doMethod();
}

同步第二种方法:
class MyThread implements Runnable{
public void run() {
doMethod(); //调用其中的doMethod同步方法及可
}

public synchronized void doMethod(){

System.out.println(Thread.currentThread().getName()+"正在洗澡……");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println(Thread.currentThread().getName()+"洗完了……");
}

}

同步代码死锁问题案例:








运行结果: 服务员说:先给钱再做
顾客说:先做再给钱

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐