- 博客(10)
- 收藏
- 关注
原创 JUC学习笔记(10)—线程池
public class ExecutorsDemo{ public static void main(String[] args) { ScheduledExecutorService service = Executors.newScheduledThreadPool(5); ScheduledFuture<Integer> result = null; try...
2018-07-31 22:06:28 120
原创 JUC学习笔记(9)—Semaphore
在信号量上我们定义两种操作:acquire(获取) 当一个线程调用acquire操作时,它要么通过成功获取信号量(信号量减1),要么一直等下去,直到有线程释放信号量,或超时。release(释放)实际上会将信号量的值加1,然后唤醒等待的线程。信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。 public class SemaphoreDemo{...
2018-07-31 22:04:35 209
原创 JUC学习笔记(8)—CyclicBarrier
CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。线程进入屏障通过CyclicBarrier的await()方法。 public class CyclicBarrierDemo{ private stat...
2018-07-31 22:00:41 195
原创 JUC学习笔记(7)—CountDownLatch
让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。 解释:5个同学陆续离开教室后值班同学才可以关门。也即 秦灭6国,一...
2018-07-31 21:57:54 181
原创 JUC学习笔记(6)—创建线程的新方法Callable接口
public class CallableDemo{ public static void main(String[] args) throws InterruptedException, ExecutionException { FutureTask<Integer> ft = new FutureTask<Integer>(new MyThread());...
2018-07-31 21:44:57 136
原创 JUC学习笔记(5)—ReadWriteLockDemo
一个线程写入,100个线程读取import java.util.concurrent.locks.ReentrantReadWriteLock;class MyQueue{ private Object obj; private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock(); public void ...
2018-07-31 21:42:20 116
原创 JUC学习笔记(4)—多线程之间按顺序调用
多线程之间按顺序调用,实现A->B->C 三个线程启动,要求如下:AA打印5次,BB打印10次,CC打印15次 接着 AA打印5次,BB打印10次,CC打印15次 。来10轮 public class ThreadOrderAccess{ public static void main(String[] args) { ShareResource s...
2018-07-31 21:39:34 348
原创 JUC学习笔记(3)—Lock锁
一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法 加个普通方法后发现和同步锁无关换成两个对象后,不是同一把锁了,情况立刻...
2018-07-31 21:36:38 200
原创 JUC学习笔记(2)—线程间通信
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class ShareData{ private int number = 0; private Lock lock = ...
2018-07-31 21:31:33 216
原创 JUC学习笔记(1)—ReentrantLock
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class Ticket//资源类 类 = 实例变量+实例方法{ private int number = 30; //Lock implementations provide more extensi...
2018-07-31 21:27:22 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人