队列 中take 和pull区别
时间: 2024-04-24 22:24:53 浏览: 20
在队列中,take()和poll()是两个不同的方法,它们的区别如下:
1. take()函数会在队列中有数据时返回队列中的元素,如果队列为空,则线程会进入等待状态,直到队列中有数据可取。\[1\]
2. 而poll()函数则不会等待,如果队列为空,它会直接返回null。\[1\]
因此,如果你希望线程在队列为空时等待,直到队列中有数据可取,你应该使用take()函数。但是要注意,如果你使用while(true)来循环获取队列元素,不要使用poll()函数,因为它会导致CPU占用100%。\[1\]
另外,如果你希望ThreadPoolExecutor中的线程常驻n个线程,你可以调用allowCoreThreadTimeOut(boolean value)方法将该属性设置为false。这样,线程池将不会不停地循环轮询队列,从而减少CPU的占用。\[2\]
以上是对队列中take()和poll()方法的区别的解释,参考了引用\[1\]和引用\[2\]的内容。
#### 引用[.reference_title]
- *1* *2* *3* [queue中take()和poll()](https://blog.csdn.net/LowKeyLEI/article/details/125938687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)