java如何实现线程的安全:线程的同步机制
2017-01-21 15:37
531 查看
方法一:同步代码块
synchronized(同步监视器){
//需要被同步的代码块(即为操作共享数据的代码)
}
1.共享数据:多个线程共同操作的同一个数剧(变量)
2.同步监视器:由一个类(任何一个类)的对象来充当,哪个线程获取此监视器,谁就执行大括号里被同步的代码。俗称:锁
3.这个类的对象一定要是成员变量,不能是局部变量,简单来说这个类的对象不能再run()方法里去声明,要在run()的外边,保证所有线程公用这个对象,不然无法同步!谁调run()方法谁就会创建一个处于自己的那个类的对象。即:所有的线程公用同一把锁
4.这个对象可以直接写个this,表示用当前对象来作为锁(这里要区分是用那种方式来写的子线程,实现Runable接口的方式可以使用,继承的方式慎用,以为可能是多个对象,this就不是同一个了)
5.共享数据很重要,不能多也不能少,不然会出问题的
方法二:同步方法
1.将操作共享数据的方法声明为synchronized。即此方法为同步方法,能够保证其中一个线程执行此方法时,其他线程在外等候直至此线程执行完此方法
2.同步方法的锁:this
3.对于静态方法而言,可以使用当前类本身充当锁(类名.class)这是利用了反射
同步方法(非静态)的锁为:this
同步方法(静态)的锁为:当前类本身
死锁问题的解决:
1.专门的算法原则
2.尽量减少同步资源的定义
线程通信:
1.wait()、notify()、notifyAll()这三个方法只有在 synchronized方法或synchronized代码块中才能使用,否则会报异常
synchronized(同步监视器){
//需要被同步的代码块(即为操作共享数据的代码)
}
1.共享数据:多个线程共同操作的同一个数剧(变量)
2.同步监视器:由一个类(任何一个类)的对象来充当,哪个线程获取此监视器,谁就执行大括号里被同步的代码。俗称:锁
3.这个类的对象一定要是成员变量,不能是局部变量,简单来说这个类的对象不能再run()方法里去声明,要在run()的外边,保证所有线程公用这个对象,不然无法同步!谁调run()方法谁就会创建一个处于自己的那个类的对象。即:所有的线程公用同一把锁
4.这个对象可以直接写个this,表示用当前对象来作为锁(这里要区分是用那种方式来写的子线程,实现Runable接口的方式可以使用,继承的方式慎用,以为可能是多个对象,this就不是同一个了)
5.共享数据很重要,不能多也不能少,不然会出问题的
方法二:同步方法
1.将操作共享数据的方法声明为synchronized。即此方法为同步方法,能够保证其中一个线程执行此方法时,其他线程在外等候直至此线程执行完此方法
2.同步方法的锁:this
3.对于静态方法而言,可以使用当前类本身充当锁(类名.class)这是利用了反射
同步方法(非静态)的锁为:this
同步方法(静态)的锁为:当前类本身
死锁问题的解决:
1.专门的算法原则
2.尽量减少同步资源的定义
线程通信:
1.wait()、notify()、notifyAll()这三个方法只有在 synchronized方法或synchronized代码块中才能使用,否则会报异常
相关文章推荐
- java基础—HashMap实现原理,如何保证HashMap的线程安全?
- java多线程有几种实现方法?线程之间如何同步
- 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?
- 拿来主义:java中的线程安全与非线程安全,以及如何使用和实现
- 浅谈利用同步机制解决Java中的线程安全问题
- java中同步synchronized的意义,如何用它解决线程不安全的问题
- Java线程如何实现同步?
- java多线程有几种实现方法?线程之间如何同步
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
- Java线程同步机制synchronized关键字的理解
- Java中有几种方法实现一个线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不提倡使用?
- Java线程同步如何才能排除阻塞
- Java线程同步如何才能排除阻塞
- 列出线程的实现方式?如何实现同步?
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- JAVA线程同步锁机制分析
- Java线程同步机制深刻阐述
- Java线程同步机制synchronized关键字的理解
- java学习——如何实现线程之间的通信 ,Condition 的使用
- java中有几种方法可以实现一个线程?用什么关键字修饰同步