
并发
清雪冰橙
智商不够,时间来凑。
展开
-
Java并发学习(二)
一、start和run的区别start方法是创建一个新的子线程并启动(调用run方法)run方法只是Thread的一个普通方法的调用二、线程的状态1. 新建(New): 创建后尚未启动的线程的状态2. 运行(Runnable):包含Running和Ready3. 无限期等待(Waiting): 不会被分配CPU执行时间,需要被唤醒没有设置Timeout参数的Object.wait()方法没有设置Timeout参数的Thread.join()方法LockSupport.part()原创 2020-06-13 11:25:13 · 197 阅读 · 0 评论 -
线程池学习总结
一、为什么使用线程池1. 能够减少线程切换带来的开销如果有大量执行时间很短的任务,那么上下文切换带来的时间开销甚至会超过任务执行的时间,这显然是不合理的。而使用线程池就能降低线程创建和销毁造成的损耗。2. 能够提高响应速度任务到达时,无需等待线程创建即可立即执行。3. 提高线程的可管理性线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使用线程池可以进行统一的分配、调优和监控。二、线程池的生命周期线程池有5种状态:其生命周期转原创 2020-06-01 18:04:59 · 290 阅读 · 0 评论 -
详解AQS
一、什么是AQS我们常用的j.u.c包里,提供了许多强大的同步工具,例如ReentrantLock,Semphore,ReentrantReadWriteLock等,但当这些工具难以满足某个场景的需求时,我们就需要定制化我们自己的同步器,这时,我们可能会想,如果能有一个像Servlet这种只要重写某几个方法就能完成一把定制锁的实现的就好了!! 没错,AQS就是提供了这样一种功能,它如果要实现一个...原创 2020-04-07 22:20:00 · 766 阅读 · 0 评论 -
ThreadLocal学习
一、ThreadLocal解决了什么问题在一些情况下,我们希望对于某一个共享变量,对于不同线程来说都是独一无二的,例如:有一个共享变量x,线程A去对其进行写操作,读操作,线程B也对其进行写操作读操作,而线程A和线程B在去读写x时的感觉,就像是读写一个本地变量一样,完全与外界封闭, 这就是线程封闭的想法。下面有三种线程封闭的实践:Ad-hoc 线程封闭:即维护线程封闭性职责交给程序实现,...原创 2020-04-03 12:49:55 · 147 阅读 · 0 评论 -
Java并发编程学习笔记
第二章 Java并发机制的底层实现原理一、Volatile关键字作用:保证了“共享变量”在多线程环境下的“可见性”.底层实现原则:对被volatile修饰的变量进行写操作的时候,JVM会向处理器发送一条#Lock前缀指令,这个指令的作用就是将对应缓存行的数据写回到被缓存的内存。一个处理器将缓存回写到内存<addr>中,那么其他处理器中对<addr>...原创 2020-04-18 20:37:59 · 193 阅读 · 0 评论