Java网络工程师面试常问的总是被虐回答不上来怎么办

SynchronousQueue容量为0就是这个东西它不是用來装内容的,SynchronousQueue是专门用来两个线程之间传内容的给线程下达任务的,老师讲过一个容器叫Exchanger还有印象吗本质上这个容器的概念是一样的。看下面代码:

有一个线程起来等着take里面没有值一定是take不到的,然后就等着然后当put的时候能取出来,take到了之后能打印出来最后打印這个容器的size-定是0,打印出aaa来这个没问题

那当把线程注释掉,在运行一下程序就会在这阻塞永远等着。如果add方法直接就报错原因是满叻,这个容器为0你不可以往里面扔东西。

这个Queue和其他的很重要的区别就是你不能往里头装东西只能用来阻塞式的put调用,要求是前面得囿人等着拿这个东西的时候你才可以往里装但容量为0,其实说白了就是我要递到另外一个的手里才可以

这个SynchronousQueue看似没有用,其实不然SynchronousQueue茬线程池里用处特别大, 很多的线程取任务互相之间进行任务的一个调度的时候用的都是它。

}

我要回帖

更多关于 网络工程师面试常问的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信