摘要:
一.Condition是什么 关键字synchronize可以与wait()和nitify()方法相结合实现实现等待/通知模式,类ReentrantLock也可以实现同样的功能,但需要借助condition对象。 Java里 sychronized和Lock+Condtion 都属于管程模型,Con 阅读全文
摘要:
一.内存模型的相关概念 计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快, 而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的 阅读全文
摘要:
一.wait/notity的使用 wait()方法可以使线程进入等待状态,而notify()可以使等待的状态唤醒。 这样的同步机制十分适合生产者、消费者模式:消费者消费某个资源,而生产者生产该资源。 当该资源缺失时,消费者调用wait()方法进行自我阻塞,等待生产者的生产;生产者生产完毕后调用not 阅读全文
摘要:
一.wait/notify是什么 等待/通知机制,是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()/notifyAll()方法, 线程A收到通知后退出等待队列,进入可运行状态,进而执行后续操作。 上诉两个线程通过对象O来完成交互,而对象上的wai 阅读全文
摘要:
一.Volatile是什么 Java语言规范第三版中对volatile的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。 Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile 阅读全文
摘要:
一.Volatile的使用 1、防止重排序 我们从一个最经典的例子来分析重排序问题。大家应该都很熟悉单例模式的实现,而在并发环境下的单例实现方式,我们通常可以采用双重检查加锁(DCL)的方式来实现。 其源码如下: package com.paddx.test.concurrent; public c 阅读全文