juc
lzxomg
这个作者很懒,什么都没留下…
展开
-
java 可重入锁、自旋锁、可中断锁、公平锁、 读写锁
可重入锁可重入锁,指的是同一线程 外层方法获得锁之后 调用了仍然需要获取同一个锁的方法,不用重新获取锁,可以直接执行。在JAVA中synchronized和ReentrantLock 都是 可重入锁。可重入锁最大的作用是避免死锁代码示例1:public class MyRunnable implements Runnable{ public synchronized void fun1...原创 2019-10-30 23:41:30 · 256 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier、Semaphore
DownCountLatch 闭锁、多线程计数器DownCountLatch :闭锁、多线程计数器, 允许一个或多个线程,等待其他一组线程完成操作,再继续执行。实例化DownCountLatch时候传入计数值,当一个线程调用DownCountLatch的await方法的时候,这个线程会处于等待状态,其他线程任务中调用countDown方法,每次count减一,当count减到0为止,这个线程才...原创 2019-09-28 18:57:57 · 142 阅读 · 0 评论 -
java Future
FutureFuture 接口位于java.util.concurrent包下,是Java 1.5中引入的接口。Future主要用来对具体的Runnable或Callable任务 进行取消任务、判断任务是否完成、获取任务执行结果。当你提交一个Callable对象给线程池时,将得到一个Future对象,并且它和你传入的Callable示例有相同泛型。Future 接口中的5个方法:publ...原创 2019-09-25 09:41:59 · 437 阅读 · 0 评论 -
java ForkJoinPool
ForkJoinPool 是Java 1.7 引入的一种新的并发框架—— ForkJoin Framework。ForkJoinPool 主要用于实现“分而治之”的算法,特别是分治之后递归调用的函数,例如 quick sort 等。ForkJoinPool 最适合的是计算密集型的任务,如果存在 I/O,线程间同步,sleep() 等会造成线程长时间阻塞的情况时,最好配合使用 ManagedBl...原创 2019-09-22 23:19:12 · 176 阅读 · 0 评论 -
多线程交替打印99~1
import cn.hutool.core.lang.Console;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 线程 t1,t2,t3 交替打印99,98...原创 2019-09-22 18:26:34 · 210 阅读 · 2 评论 -
java 线程池
线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。线程池的体系结构: java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |--ExecutorService 子接口: 线程池的主要接口 |--ThreadPoolExecutor 线程池的实现类 |--ScheduledExecu...原创 2019-09-21 23:31:14 · 154 阅读 · 0 评论 -
java 读写锁
使用读写锁替代完全互斥的同步锁, 在写少读多的场景下可以提高效率(有写才互斥,全读可并发)。对于一个读写锁来说,同一时刻, 如果一个线程拿到了写锁,排斥其他线程获取锁,不管想要获取读锁 还是写锁,都必须等待;统一时刻,没有线程在写,都是在读的情况下, 不排斥 其他线程获取读锁 并发读取数据, 如果此时有线程想要获取写锁 的话、需要等到当前所有正在读的线程执行完成,才能获取到写锁。代码示例i...原创 2019-09-21 18:46:18 · 285 阅读 · 0 评论 -
java volatile
volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。———————————————...原创 2019-09-21 16:19:22 · 418 阅读 · 0 评论 -
java实现线程的第三种方式Callable
import cn.hutool.core.lang.Console;import cn.hutool.core.lang.Console;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;...原创 2019-09-21 14:45:32 · 213 阅读 · 0 评论 -
CountDownLatch闭锁
闭锁,多线程计数器;创建 闭锁对象CountDownLatch countDownLatch = new CountDownLatch(10); 倒数10此每次执行线程任务countDownLatch.countDown(); -1等待 计数器完成倒数操作countDownLatch.await();, 才往下继续执行import java.util.concurrent.CountD...原创 2019-09-21 14:03:35 · 133 阅读 · 0 评论