Java中的SynchronousQueue阻塞队列使用代码实例

 更新时间:2023年12月14日 10:04:06   作者:Terisadeng  
这篇文章主要介绍了Java中的SynchronousQueue阻塞队列使用代码实例,SynchronousQueue是无缓冲区的阻塞队列,即不能直接向队列中添加数据,会报队列满异常,需要的朋友可以参考下

SynchronousQueue阻塞队列

SynchronousQueue是无缓冲区的阻塞队列,即不能直接向队列中添加数据,会报队列满异常,如下所示:

import java.util.concurrent.SynchronousQueue;
public class SynchronousQueueExp {
	public static void main(String[] args) {
		SynchronousQueue<String> sq=new SynchronousQueue<>();
		String str="aaa";
		sq.add(str);
	}
}

必须在有消费者阻塞等待时生产者才可以向队列中添加数据,这时由阻塞状态的消费者直接获取,相当于没有向队列中添加数据,直接将数据交给了消费者。

import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
public class SynchronousQueueExp {
	public static void main(String[] args) {
		final SynchronousQueue<String> sq=new SynchronousQueue<>();
		/*String str="aaa";
		sq.add(str);*/
		Thread t1=new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					while (true) {
						System.out.println("消费者阻塞等待获取数据...");
						System.out.println("消费者消费数据:"+sq.take());
					}
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		},"t1");
		Thread t2=new Thread(new Runnable() {
			@Override
			public void run() {
				sq.add("bb");
			}
		},"t2");
		t1.start();
		try {
			TimeUnit.SECONDS.sleep(2);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		t2.start();
	}
}

到此这篇关于Java中的SynchronousQueue阻塞队列使用代码实例的文章就介绍到这了,更多相关SynchronousQueue阻塞队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot之Duration(java.time.Duration)在yml properties中的配置方式

    springboot之Duration(java.time.Duration)在yml properties中

    这篇文章主要介绍了springboot之Duration(java.time.Duration)在yml properties中的配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java获取视频时长、大小的示例

    Java获取视频时长、大小的示例

    这篇文章主要介绍了Java获取视频时长、大小的示例,帮助大家利用Java处理视频,完成需求,感兴趣的朋友可以了解下
    2020-11-11
  • SpringBoot_Cache自定义使用SimpleCacheManager方式

    SpringBoot_Cache自定义使用SimpleCacheManager方式

    这篇文章主要介绍了SpringBoot_Cache自定义使用SimpleCacheManager方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用springmvc参数接收boolean类型参数的问题

    使用springmvc参数接收boolean类型参数的问题

    这篇文章主要介绍了使用springmvc参数接收boolean类型参数的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Redis + Java拦截器实现用户匿名和非匿名访问

    Redis + Java拦截器实现用户匿名和非匿名访问

    本文主要介绍了Redis + Java拦截器实现用户匿名和非匿名访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • java Semaphore共享锁实现原理解析

    java Semaphore共享锁实现原理解析

    这篇文章主要为大家介绍了Semaphore共享锁实现原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • java实现数字转换人民币中文大写工具

    java实现数字转换人民币中文大写工具

    这篇文章主要为大家详细介绍了java实现数字转换人民币中文大写工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Intellij IDEA如何查看所有断点

    Intellij IDEA如何查看所有断点

    这篇文章主要介绍了Intellij IDEA如何查看所有断点问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java中set接口使用方法详解

    java中set接口使用方法详解

    这篇文章主要为大家详细介绍了java中set接口使用方法,介绍了Java中Set集合接口实现插入对象不重复的原理,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • java实现消息队列的两种方式(小结)

    java实现消息队列的两种方式(小结)

    本文主要介绍了两种java实现消息队列的方式,利用Spring消息模板发送消息和Apache ActiveMQ官方实例发送消息,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论