Java线程同步与死锁认识
2015-05-21 13:21
204 查看
讲下自己的认识,算小小的总结吧!
synchroized 具有同步线程的功能,它的处理机制类似于给参数里面的对象赋一个标记值,来表明当前状态,当程序里面某个线程执行synchroized里面的代码段时,它会先对这个状态进行判断,如果处于0这种状态,它会暂时被阻塞,所以能有效防止数据错误的产生。
死锁这个概念,个人理解是两个线程或多个线程产生冲突,例如两个线程,两个代码块,当线程一在处理代码块一的时候,这个时候要用到代码块二的东西,而线程二在处理代码块二的东西,也希望调用代码块一的东西,这个时候由于各自线程都锁住当前代码块,导致一直处于阻塞状态,然后就崩溃了。
一个简单的例子:
synchroized 具有同步线程的功能,它的处理机制类似于给参数里面的对象赋一个标记值,来表明当前状态,当程序里面某个线程执行synchroized里面的代码段时,它会先对这个状态进行判断,如果处于0这种状态,它会暂时被阻塞,所以能有效防止数据错误的产生。
死锁这个概念,个人理解是两个线程或多个线程产生冲突,例如两个线程,两个代码块,当线程一在处理代码块一的时候,这个时候要用到代码块二的东西,而线程二在处理代码块二的东西,也希望调用代码块一的东西,这个时候由于各自线程都锁住当前代码块,导致一直处于阻塞状态,然后就崩溃了。
一个简单的例子:
package t1; public class t5 { public static void main(String[] args) { t t1 = new t(); Thread tt = new Thread(t1); Thread tt1 = new Thread(t1); tt.start(); tt1.start(); } } class t implements Runnable { private int num = 2000; public void run() { while (true) { synchronized (this) { if (num > 0) { // try { // Thread.sleep(1000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } System.out .println(Thread.currentThread().getName() + " " + num); num--; } else break; } } } }
相关文章推荐
- Java- 简单了解线程 同步线程和死锁(二)
- java线程研究---(10)Thread同步:死锁
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- Java中线程的状态、同步锁以及死锁详解
- JAVA线程同步与死锁
- Java中的线程的状态、线程休眠、同步锁、死锁、Lock接口、匿名内部类(基础解析)
- Java线程同步与死锁、生产者消费者模式以及任务调度等
- Java线程的同步与死锁(同步)
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- JAVA | 24 - 线程的同步与死锁
- java 同步锁 synchronized 死锁 lock锁 jion 线程结束
- Java复习之线程的同步与死锁
- 从头认识java-17.4 详解同步(5)- 死锁
- 对Java线程同步的认识
- Java线程安全问题——同步和死锁
- java线程同步之死锁问题
- Java- 简单了解线程 同步线程和死锁(二)
- JAVA线程—同步与死锁
- Java 线程的同步(synchronized)与死锁
- Java线程的同步与死锁