待总结学习.txt
UP 返回
CompletableFuture f=CompletableFuture.supplyAsync(()-> new String("aa")).thenAccept((result)-> System.out.println("aa"));
String转数组:char[] a1 = "ABCDDEFG".toCharArray();
LockSupport.park(); // 当前线程暂停
LockSupport.unpark(t2); // 唤醒指定线程
park和unpark的顺序没有强制的先后要求,不像加锁一定要先wait再notify
每一个作为锁的对象都有一个等待队列,当调用wait方法时,表示将当前线程加入等待队列;等其他线程调用notify时,会随机唤醒该队列中的一个线程
但是比如生产者消费者,我们有时是需要唤醒指定的一类线程的,这时可以使用ReentrantLock,搭配Condition可以在await时将线程放入指定的等待队列,在signal时又可以将指定队列的线程唤醒
!!@@202305211.png_453_646_1@@!!
同步队列 TransferQueue<Character> queue = new LinkedTransferQueue<>();
通过queue.transfer(c)向队列塞入一个对象,必须等另一个线程queue.take()执行拿走对象才能继续往下走
!!@@202305212.png_614_600_1@@!!
DOWN 返回