- 博客(11)
- 收藏
- 关注
原创 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
306
原创 java多线程-7(线程池)
java线程池什么是线程池线程池是一个存储线程的容器。使用线程池后,会创建若干个可执行的线程放入池中。需要使用线程的时候直接从池中获取而不用自己创建。线程使用完后又回到池中,等待下一次任务。为什么要使用线程池避免频繁的创建和销毁线程使用池达到线程的复用线程的创建于执行完全分开,方便维护。还可以根据项目灵活地控制并发的数目java默认的几种线程池newFixedThreadPool创建一个核心线程数量固定,没有非核心线程,队列容量无界的线程池。传入的参数即是核
2021-06-24 20:00:38
115
原创 java多线程-4(读写锁ReadWriteLock)
ReadWriteLock读写锁1、简介JDK1.5引入的读写锁ReadWriteLock相对于ReentrantLock来说,锁的粒度更小。ReadWriteLock把锁分为读锁和写锁写锁,又称排它锁,独占锁。顾名思义,每次只能被一条线程所持有,其他线程不能在读取或修改共享资源了。读锁,又称共享锁。读锁可以同时被多个线程持有,获得读锁的线程,只能读取共享资源而不能修改。多个读操作同时进行,其实并没有线程安全问题,此时可以使用读锁,用来提高程序效率。2、ReadWriteLock的实现类
2021-06-24 00:27:37
138
原创 java 多线程-6(阻塞队列BlockingQueue)
BlockingQueue1、简介BlockingKQueue,阻塞队列。是一个队列,在多线程情况下,当需要入队而队列已满或需要出队而队列为空时,会造成阻塞,即线程挂起,一但入队或出队的条件满足,线程又自动唤醒。在消费者生产者问题中,可通过阻塞队列传递数据,当生产者消费者数据处理速度不一致时,例如,生产者速度大于消费者,当生产者的数据积累到一定程度时,就阻塞生产者线程,反之亦然。2、BlockingKQueue的四组API方式抛出异常有返回值,不抛出异常阻塞等待超时等待
2021-06-23 17:31:27
143
原创 java多线程-5(COW)
COW思想1、简介CopyOnWrite(写入时复制),是一种使用在程序设计领域的最优化策略。其核心思想是在多个调用者同时请求相同资源时,他们会共同获得相同的指针指向相同的资源,直到某个调用者试图修改资源时,系统会返回一个资源的副本给调用者。而其他调用的最初的资源你不会改变。整个过程对其他线线程是立即可见的。JDK中的CopyOnWriteArrayList 和CopyOnWriteArraySet 使用了COW的思想。2、缺点在写入操作的时候,不断地进行复制操作,占用大量内存,可能造成频繁的GC
2021-06-23 14:47:42
212
原创 JDK8 新特性(Stream流的常用方法)
Stream流的常用方法流的操作分为两种,中间操作与终止操作,中间操作会返回一个新的流,例如distinct()方法。终止操作后流将不能再使用,例如count() 方法。stream流操作是延迟执行的 ,一旦执行终止操作,就执行中间操作链,并产生结果代码示例:public class User { private String name; private String sex; private int age; ......}public class Demo{
2021-06-22 21:44:55
181
原创 java-IO-2(字符流及其他常用流)
字符流文件字符输入流 FileReaderjava.lang.Objectjava.io.Readerjava.io.InputStreamReader 转换流(字节输入流===>字符输入流)java.io.FileReader接口:Closeable, Readablpublic class FileReaderTest { public static void main(String[] args) throws Exception { FileRead.
2021-06-22 13:05:15
59
原创 java-IO-1(字节流)
java字节流字节输入流:FileInputStreamjava.lang.Object— java.io.InputStream------ java.io.FileInputStream通常创建一个byte[],用read*(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。字节输出流:FileOutputStreamjava.lang.Object— java.io.OutputStream------ java.io.Fil.
2021-06-22 12:50:28
91
原创 java多线程-3(多线程工具类)
多线程工具类1、CountDownLatch (倒计时锁存器)一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待代码示例:使一个线程等待其他线程各自执行完毕后再执行public class Demo{ public static void main(String[] args) throws InterruptedException{ CountDownLatch cdl = new CountDownLatch(3); fo
2021-06-22 00:31:37
405
原创 java多线程-2(八锁问题)
多线程8锁问题问题:两个线程之间睡眠1秒,先打印哪个?public class Demo1 { public static void main(String[] args) throws InterruptedException { Test1 test1 = new Test1(); new Thread(()->{ test1.one(); },"a").start(); TimeUnit.SECONDS.sleep(1);.
2021-06-20 23:41:33
68
原创 java多线程-1(synchronized 与Lock)
GUC ——1一 、多线程复习1、synchronized 关键字保证线程安全public class Demo {...class Ticket{ private int number; public Ticket(int number) { this.number = number;} public synchronized void sell(){ while (number>0){ System.out.print
2021-06-20 22:56:15
51
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人