美文网首页
java并发编程实战笔记

java并发编程实战笔记

作者: Mrryo | 来源:发表于2018-08-06 17:01 被阅读0次

1、volatile:确保了数据的可见性(无法保证数据的原子性、有序性),原理是它会立即把操作先更新到线程内存中,然后更新到主存中。其他线程把数据从主存更新到线程内存中。

2、ThreadLocal:确保数据的独立性(每个线程数据都是独立的),它在线程内部有独立的内存副本

3、Thread:线程类,生命周期为创建(new)、准备就绪(start,runnable)、运行(running)、阻塞(blocked)、time waiting(睡眠或等待一定的事件)、waiting(等待被唤醒)、消亡(dead)。注意点:

sleep()方法挂起线程,可指定时间,但是不释放锁;yield()方法挂起线程(给相同优先级线程用);

join/wait方法阻塞线程,会释放锁。notify/notifyAll()会唤醒一个等待该锁的线程,等线程结束,在释放锁。

interrupt()停止线程(是给线程打了个停止标签,而不是立即停止)

3、Runnable:接口,可以创建线程,(通过Thread.start()调用run())

4、Callable<V>:泛型参数化接口,可以有返回值,(只能ExecutorService的submit方法去启动call)

5、Future<V>:用于追踪一个异步任务的结果(ExecutorService的submit返回的是Future),有以下方法:get():方法结束返回一个结果,不然就阻塞;

cancel():停止任务;isDone():方法是否完成;isCancel():方法是否取消。

6、FutureTask:Future接口的一个唯一实现类,实现了Runnable接口,可以被Thread和ExecutorService执行。

7、Executors:实现ExecutorService接口;可以创建以下线程池:newFixedThreadPool(int)适用于稳定固定数目、

newScheduledThreadPool(int)调度型线程池、SingleThreadExcutor()单例线程池、newCachedThreadPool()缓存型线程池,适用于生命周期短的异步任务。

ExecutorService有如下方法:execute()执行线程,submit()执行线程(支持返回值future),shutdown()关闭线程池(等待提交的线程执行完)shutdownnow()立刻关闭线程池(有提交、正在执行的线程也中断),invokeAll(tasks)批量提交任务,返回List<future<V>>

8、ThreadPoolExecutor :自定义线程池

9、AQS:抽象队列同步器,用了volatie变量和fifo队列实现。有以下方法:tryAcquire()独占式获取同步状态;tryRelease()独占式释放同步状态;

tryAcquireShared()共享式获取同步状态;tryReleaseShared()共享式释放同步状态;isHeldExclusively()是否被当前线程所独占.

10、CAS:基于硬件的算法机制(不适用于竞争严重,自旋概率大)。V(要更新的值)、E(预期值)、N(新值),if(v=e),v=N。

ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作(可以加版本号解决)

11、CountDownLatch:控制某个或者多个线程,让它们等待多个线程完成某项任务后,再启动;await()等待,如果计数器==0被唤醒;

countDown(),任务执行完-1;

12、synchronized:内置锁;无法被中断,无法设置公平锁,可重入(解决多个线程对同一资源的并发访问)

13、Semaphore:解决多副本资源的共享访问;acquire()申请信号量;release()释放

14、Lock:(解决多个线程对同一资源的并发访问)ReentrantLock可重入锁;ReentrantReadWriteLock读写锁

15、CyclicBarrier:实现让一组线程等待至某个状态之后再全部同时执行,当所有等待线程都被释放以后,CyclicBarrier可以被重用,wait(),等待多个线程执行后再继续后续操作

16、原子变量:AtomicInteger、AtomicBoolean

参考网址:concurrenthttps://blog.csdn.net/qq_25827845/article/details/76422930;

https://www.jianshu.com/p/46728d6bc6b2

相关文章

  • Java并发 - Future模式

    标签:原创 Java 并发 更多Java并发实战内容,请参考Java并发 - 并发编程实战 理解Future 关于...

  • Java高并发 -- 并发扩展

    Java高并发 -- 并发扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 死锁 死锁是指...

  • Java高并发--AQS

    Java高并发--AQS 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 AQS是Abstra...

  • Java高并发 -- 线程池

    Java高并发 -- 线程池 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 在使用线程池后,...

  • Java高并发--安全发布对象

    Java高并发--安全发布对象 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 发布对像:使一...

  • Java高并发--消息队列

    Java高并发--消息队列 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 举个例子:在购物商...

  • Java高并发--线程安全策略

    Java高并发--线程安全策略 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 不可变对象 发...

  • Java高并发 -- J.U.C.组件扩展

    Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 F...

  • JAVA并发编程实战.pdf 免费下载

    下载地址:JAVA并发编程实战.pdf

  • Java高并发--原子性可见性有序性

    Java高并发--原子性可见性有序性 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 原子性:...

网友评论

      本文标题:java并发编程实战笔记

      本文链接:https://www.haomeiwen.com/subject/jemgmftx.html