《java并发编程的艺术》总结

1.什么是上下文切换

  CPU通过时间片分配算法来循环执行任务,任务从保存状态到再加载的过程就是一次上下文切换;

 2.死锁的问题

   synchronized(A) {

      ynchronized(B){

      }

  }

3.Java通过锁和循环CAS操作(CPU缓存回写主内存)的方式实现原子操作,synchronized通过对象锁,对象头mark word 保存锁信息

4.锁状态,无锁状态,偏向锁,轻量级锁(需要通过cas操作,自旋),重量级锁阻塞(),ABA问题

5.H-B规则,顺序规则,锁规则,volatile规则 传递性,start,join规则

6.volatile 可见性,单个变量的原子性,不能重排序

7.单例模式,双重检查锁定,和延迟初始化

public class DoubleCheckedLocking{

  private static Instance instance;

  public static Instance getInstance(){

  if(instance == null){

    synchronized(DoubleCheckedLocking.class){

    if(instance ==null) 

      instance = new Instance(); 指针赋值,初始化,重排序导致对象可能还没初始化}}}}

(1)instance变量增加volatile关键字,基于类初始化

public class InstanceFactory{

  private static class instanceHolder{

  public static Instance instance = new Instance();}

  public static Instance getInstance(){

  return InstanceHoder.instance;}

}

8.进入等待状态的线程需要其它线程的通知才能返回到就绪状态,Thread.join(long) wait sleep

9.运行,就绪 等待 阻塞,Object.wait() Thread.join LockSupport.park(),Thread.yield() Oject.notify

10.jVM检查中断的线程,先将线程的中断标识消除,并抛出InterruptedException

11.同步器,(lock)同步队列,等待队列(wait),到同步队列(notify)

12.threadlocal,线程本地变量,每个线程都有个threadlocalMap的变量,以threadlocal对象为键,任何对象为值的存储结构

13.同步器维护一个同步队列,获取状态失败的线程都会被加入到队列中并在队列中进行自旋;移除队列的条件是前驱节点为头结点且成功获取了同步状态,在释放同步状态时,

同步器会调用 tryrelease 释放同步状态,然后唤醒头结点的后继节点

14.await 同步队列首节点移到condition的等待队列,加入等待队列+释放锁,等待通知,

signal 等待队列首节点加入到同步队列,唤醒该节点邸的线程

15.CHM segments (segment 有reentrantLock)长度为2的N次方,通过按位与的hash算法定位segments数组

 get 过程不需要加锁,除非督导值为null,才加锁重读,每个hashEntry里面的value 都有volatile修饰

 和hashmap扩容的时机不一样

16.concurrentLinkedQueue tail节点并不总是尾节点,通过hops变量,介绍cas更新tail节点的次数,

本质上增加对volatile变量的读来减少对volatile变量的写

17.synchronousQueue 不存储元素的阻塞队列,吞吐量高于Array linked

18.threadpoolExecutor Worker corePoolSize MaximumPoolSize 线程工厂 拒绝策略(默认抛出异常)keepalive blockingqueue

19.executor newFixedThreadPool(LK) newSingleThreadExecutor(lk) newCachedThreadPool(SQ) newScheduledThreadPool(执行周期性任务)

20.futureTask get run cancel,  未启动,启动(run) 已完成,ExecutorService.submit(..)返回futureTask

 

posted on 2017-03-28 00:48  LelouchKOP 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lelouchKOP/p/6629626.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值