JAVA多线程
文章平均质量分 57
嗯ྂ,哦ྂ!
java小白一枚
展开
-
java多线程-8(CompletableFuture的简单使用)
CompletableFuture简单使用在JDK1.5引入的Future接口表示了一个异步计算返回的结果。但是使用Future获取异步返回结果的时候,要么调用阻塞方法get()方法。要么轮询看isDone()是否为true。get()方法会阻塞其他线程,轮询会耗费CPU的资源。jdk1.8新增的CompletableFuture类是对Future接口的扩展实现,主要为了弥补Future没有回调机制的缺点。CompletableFuture4种创建CompletableFuture的方法run原创 2021-06-26 14:44:54 · 311 阅读 · 0 评论 -
java多线程-7(线程池)
java线程池什么是线程池线程池是一个存储线程的容器。使用线程池后,会创建若干个可执行的线程放入池中。需要使用线程的时候直接从池中获取而不用自己创建。线程使用完后又回到池中,等待下一次任务。为什么要使用线程池避免频繁的创建和销毁线程使用池达到线程的复用线程的创建于执行完全分开,方便维护。还可以根据项目灵活地控制并发的数目java默认的几种线程池newFixedThreadPool创建一个核心线程数量固定,没有非核心线程,队列容量无界的线程池。传入的参数即是核原创 2021-06-24 20:00:38 · 120 阅读 · 0 评论 -
java多线程-4(读写锁ReadWriteLock)
ReadWriteLock读写锁1、简介JDK1.5引入的读写锁ReadWriteLock相对于ReentrantLock来说,锁的粒度更小。ReadWriteLock把锁分为读锁和写锁写锁,又称排它锁,独占锁。顾名思义,每次只能被一条线程所持有,其他线程不能在读取或修改共享资源了。读锁,又称共享锁。读锁可以同时被多个线程持有,获得读锁的线程,只能读取共享资源而不能修改。多个读操作同时进行,其实并没有线程安全问题,此时可以使用读锁,用来提高程序效率。2、ReadWriteLock的实现类原创 2021-06-24 00:27:37 · 143 阅读 · 0 评论 -
java 多线程-6(阻塞队列BlockingQueue)
BlockingQueue1、简介BlockingKQueue,阻塞队列。是一个队列,在多线程情况下,当需要入队而队列已满或需要出队而队列为空时,会造成阻塞,即线程挂起,一但入队或出队的条件满足,线程又自动唤醒。在消费者生产者问题中,可通过阻塞队列传递数据,当生产者消费者数据处理速度不一致时,例如,生产者速度大于消费者,当生产者的数据积累到一定程度时,就阻塞生产者线程,反之亦然。2、BlockingKQueue的四组API方式抛出异常有返回值,不抛出异常阻塞等待超时等待原创 2021-06-23 17:31:27 · 152 阅读 · 0 评论 -
java多线程-5(COW)
COW思想1、简介CopyOnWrite(写入时复制),是一种使用在程序设计领域的最优化策略。其核心思想是在多个调用者同时请求相同资源时,他们会共同获得相同的指针指向相同的资源,直到某个调用者试图修改资源时,系统会返回一个资源的副本给调用者。而其他调用的最初的资源你不会改变。整个过程对其他线线程是立即可见的。JDK中的CopyOnWriteArrayList 和CopyOnWriteArraySet 使用了COW的思想。2、缺点在写入操作的时候,不断地进行复制操作,占用大量内存,可能造成频繁的GC原创 2021-06-23 14:47:42 · 218 阅读 · 0 评论