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()+"洗完了……");
}
}
同步代码死锁问题案例:
运行结果: 服务员说:先给钱再做
顾客说:先做再给钱
多线程共享数据的安全问题,使用同步解决
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()+"洗完了……");
}
}
同步代码死锁问题案例:
运行结果: 服务员说:先给钱再做
顾客说:先做再给钱
相关文章推荐
- JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池
- java线程基础巩固---多线程死锁分析,案例介绍
- 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析
- 2016-08-19-java-关于线程的死锁的案例分析:生产者消费者问题
- 心得3--由售票系统中的抢票机制解说同步线程及死锁案例分析
- 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析
- 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析
- 心得3--由售票系统中的抢票机制解说同步线程及死锁案例分析
- Android(java)学习笔记70:同步中的死锁问题以及线程通信问题
- JAVA线程同步锁机制分析
- Java之JVM调优案例分析与实战(2) - 集群间同步导致的内存溢出
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- 线程高级应用-心得2-同步锁讲解及面试题案例分析
- java 线程 死锁(哲学家用餐案例讲解) -------thinking java 4
- java 同步锁 synchronized 死锁 lock锁 jion 线程结束
- 黑马程序员_Java基础_线程基础,创建,同步(单例设计模式的同步),死锁
- JAVA线程同步与死锁
- Java线程同步与死锁认识
- Java- 简单了解线程 同步线程和死锁(二)
- 线程高级应用-心得7-java5线程并发库中阻塞队列Condition的应用及案例分析