待总结学习.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 返回