阻塞队列与多线程读写锁

本文介绍了阻塞队列的四种阻塞策略:抛出异常、返回false、等待以及等待超时,并探讨了多线程读写锁的机制,强调在任何时候只有一个线程能获取写锁,但多个线程可并发读取,读写状态的切换会导致不同线程的阻塞情况。
摘要由CSDN通过智能技术生成
  • 阻塞队列有四种阻塞方式

    1.遇到阻塞就抛出异常

    2.遇到阻塞不抛出异常,返回false

    3.遇到阻塞就等待,一直等待

    4.遇到阻塞就等待,直到等待超时退出

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;

public class test01 {
   
    public static void main(String[] args) throws InterruptedException {
   
        //test1();
        //test2();
        //test3();
        test4();
    }
    //遇到阻塞就抛出异常
    public static void test1(){
   
        //设置阻塞队列大小
        ArrayBlockingQueue blockingQueue = new ArrayBlockingQueue<>(3);
        System.out.println(blockingQueue.add("a")); //往队列中添加元素
        System.out.println(blockingQueue.add("b"));
        System.out.println(blockingQueue.add("c"));
        //System.out.println(blockingQueue.add("d"));
        System.out.println(blockingQueue.element());  //打印出队首

        System.out.println(blockingQueue.remove());  //从队列中移除元素
        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        //System.out.println(blockingQueue.remove());  //NoSuchElementException
    }
    
    //遇到阻塞不抛出异常,返回false
    public static void test2(){
   
        ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值