摘要:
一、用于解决多线程安全问题的方式 synchronized:隐式锁 1)同步代码块 2)同步方法 JDK1.5后 3)同步锁 Lock 注意:是一个显式锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁。 1 public class TestLock { 2 public s 阅读全文
摘要:
一、生产者消费者案例 1、使用synchronized关键字实现 1 public class TestProductorAndConsumer { 2 public static void main(String[] args) { 3 Clerk clerk = new Clerk(); 4 P 阅读全文
摘要:
通过Callable和Future创建线程 i. 创建Callable接口的实现类,并实现call方法,该call方法将作为线程执行体,并且有返回值,可以抛出异常。 ii. 创建Callable实现类的实例,使用FutureTask类包装Callable对象,该FuturedTask对象封装了Cal 阅读全文
摘要:
一、CAS(无锁的执行者) CAS包含3个参数:内存值 V 旧的预期值 A 新值 B 当且仅当V值等于A值时,将V的值改为B值,如果V值和A值不同,说明已经有其他线程做了更新,则当前线程什么都不做,最后返回当前V的真实值。CAS操作是抱着乐观的态度进行的(乐观锁),它总是认为自己可以成功地完成操作。 阅读全文