![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 61
呆萌的大逗
这个作者很懒,什么都没留下…
展开
-
Java之线程中断
Java的中断机制没有抢占式机制,只有协作式机制。为何要用中断,线程处于阻塞(如调用了java的sleep,wait等等方法时)的时候,是不会理会我们自己设置的取消标志位的,但是这些阻塞方法都会检查线程的中断标志位。interruptisInterruptedinterrupted将中断标识位设置为true读取中断标识,为true则代表要中断当前线程读取中断标识并重新...原创 2018-12-17 14:04:36 · 198 阅读 · 0 评论 -
Java之AQS原理浅析
前面讲解了Java并发中的显示锁。原创 2019-01-31 12:48:36 · 4172 阅读 · 0 评论 -
Java之CAS无锁算法
如果一个线程失败或挂起不会导致其他线程也失败或挂起,那么这种算法就被称为非阻塞算法。而CAS就是一种有名的非阻塞算法实现,也是一项乐观锁技术。它能在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步,所以CAS也是一种无锁算法。 CAS包含了3个操作数——需要读写的内存位置V、进行比较的值A和拟写入的新值B。当且仅当V的值等于A时,CAS才会通过原子方式用新值B来更新V的值,否则不会执...原创 2019-01-21 18:23:13 · 2593 阅读 · 1 评论 -
JVM之内存模型与线程
由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲。 基于高度缓存的存储交互很好地解决了处理器与内存的速度矛盾,但也引入了一个新的问题:缓存一致性。在多处理系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存,如下图所示。当多个处理器的运算任务都涉及同一主内存区域是,将可能导...原创 2019-01-05 20:38:18 · 249 阅读 · 0 评论 -
Java之线程实现原理
并发不一定依赖多线程(如PHP中很常见的多进程并发),但在Java里谈并发,大多数都与线程脱不了关系。线程是一种比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和调度执行分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。1、线程的实现 Java提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start...原创 2018-12-31 23:46:52 · 239 阅读 · 0 评论 -
Java线程之线程池的使用
 用法具体实现newFixedThreadPoolExecutors.newFixedThreadPool(int)Executors.newFixedThreadPool(int,ThreadFactory)new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new Linke...原创 2018-12-31 17:57:33 · 158 阅读 · 0 评论 -
Java线程之线程池
Executor框架可以将任务的提交与任务的执行策略解耦开来。就像许多对复杂过程的解耦操作那样,这种论断多少有些言过其实了。虽然Executor框架为定制和修改执行策略提供了相当大的灵活性,但并非所有的任务都能适用所有的执行策略。有些类型的任务需要明确的指定执行策略。依赖性任务使用线程封闭机制的任务对相应时间敏感的任务使用ThreadLocal的任务大多数行为正确的任务...原创 2018-12-28 22:28:31 · 167 阅读 · 0 评论 -
Java线程池之栅栏
通过闭锁来启动一组相关的操作,或者等待一组相关的操作结束。闭锁是一次性对象,一旦进入终止状态,就不能重置。 栅栏类似于闭锁,它能阻塞到一组线程到某个事件发生。栅栏于闭锁的关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。栅栏用于实现一些协议,例如几个家庭决定在某个地方集合:”所有人6:00在麦当劳碰头,到了以后要等待其他人,之后再讨论下一步要做...原创 2018-12-17 14:33:46 · 1496 阅读 · 0 评论 -
Java线程之信号量
计数信号量用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。计数信号量还可以用来实现某种资源池,或者对容器施加边界。 Semaphore中管理者一组虚拟的许可,许可的数量可通过构造函数来指定。在互相操作时可以首先获得许可(只要还有剩余的许可),并在使用以后释放许可。如果没有许可,那么acquire将阻塞直到有许可(或者直到被中断或者操作超时)。release方法将返回一个...原创 2018-12-17 14:29:56 · 1130 阅读 · 0 评论 -
Java线程之闭锁
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。闭锁可以用来确保某些活动直到其他活动都完成后才继续执行,例如:确保某个计算再其需要的所有资源都被初始化之后才继续执行。二...原创 2018-12-17 14:06:17 · 324 阅读 · 1 评论 -
Java之显示锁
在Java 1.5之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。Java1.5增加了一种新的机制:ReentrantLock。但ReentrantLock并不是替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。【参考资料】Java并发——显示锁java并发编程-线程同步-显示锁ReentrantLock不可不说的Jav...原创 2019-01-22 22:23:22 · 962 阅读 · 1 评论