同步队列SynchronousQueue 不存储

同步队列SynchronousQueue

没有容量,进去一个元素,必须等待取出来之后,才能往里放一个元素!

/*
 * 同步队列
 * SynchronousQueue 和其他的BlockingQueue 不一样,
 * SynchronousQueue不存储元素
 */
public class SynchronousQueueTest {
    
    
	public static void main(String[] args) {
    
    
		SynchronousQueue<String> queue = new SynchronousQueue<>();
		
		new Thread(()->{
    
    
			try {
    
    
				System.out.println(Thread.currentThread().getName()+ "put 1");
				queue.put("1");
				System.out.println(Thread.currentThread().getName()+ "put 2");
				queue.put("2");
				System.out.println(Thread.currentThread().getName()+ "put 3");
				queue.put("3");
			} catch (InterruptedException e) {
    
    
				e.printStackTrace();
			}
		},"T1").start();
		
		new Thread(()->{
    
    
			try {
    
    
				TimeUnit.SECONDS.sleep(3);
				System.out.println(Thread.currentThread().getName()+ queue.take());
				TimeUnit.SECONDS.sleep(3);
				System.out.println(Thread.currentThread().getName()+ queue.take());
				TimeUnit.SECONDS.sleep(3);
				System.out.println(Thread.currentThread().getName()+ queue.take());
			} catch (InterruptedException e) {
    
    
				e.printStackTrace();
			}
		},"T2").start();
	}
}

猜你喜欢

转载自blog.csdn.net/jj89929665/article/details/112983164
今日推荐