多个线程共享进程的资源,比如内存地址。同一进程中的线程访问相同的变量,并从同一个堆中分配对象,实现了良好的数据共享。但是如果没有明确的同步来管理...

多个线程共享进程的资源,比如内存地址。同一进程中的线程访问相同的变量,并从同一个堆中分配对象,实现了良好的数据共享。但是如果没有明确的同步来管理...
前面说完通过加锁等手段能保证线程的安全性,最后解决方案提到安全发布,那我们就接着看下如何安全的发布对象。先举个栗子,我们很熟悉的单例模式,单例一...
Java Memory Model JMM是隶属于JVM的,从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主...
volatile关键字的作用:保障可见性、保障有序性以及保障long/double类型的变量读写操作的原子性需要注意的是volatile仅仅只能...
线程池概述 线程池的好处: 线程可重用,线程是稀缺资源,使用线程池可减少创建和销毁线程的次数,每个工作线程都可以被重复使用。 线程并发数控制,可...
我们提到过如何保证共享变量的线程安全性,比如可以用synchronized内部锁,也可以使用Lock,volatile或者原子变量。除此之外Th...
锁的简介 锁能够保护共享数据以实现线程安全,其作用包括保障原子性、保障可见性和保障有序性。 原子性:锁是通过互斥保证原子性,互斥就是一个锁在同一...
Lock是显式锁的接口,默认实现是ReentrantLock。 方法摘要 Lock.unlock方法要放在finally语句块中,防止临界区异常...
Condition接口作为wait/notify的替代品来实现等待/通知,很好的解决了过早唤醒的问题,并且boolean await(long ...
在Java里,Object.wait()/Object.wait(long)以及Object.notify()/Object.notifyAll...
专题公告
并发相关源码分析