LinkedBlockingQueue 的 put() ANR
时间: 2024-05-25 21:13:28 浏览: 185
详细分析Java并发集合LinkedBlockingQueue的用法
5星 · 资源好评率100%
在 Android 应用中,如果在主线程中调用了 `LinkedBlockingQueue` 的 `put()` 方法,会导致 ANR(Application Not Responding)问题。这是因为 `put()` 方法会阻塞当前线程,直到队列中有可用的空间为止。
因此,如果在主线程中调用 `put()` 方法,就会导致主线程被阻塞,无法处理用户的输入事件,从而触发 ANR。
为了避免这个问题,建议在主线程中不要直接调用 `put()` 方法,而是使用异步线程来执行该操作。可以使用 `AsyncTask` 或者 `Thread` 来创建异步线程,并在其中执行 `put()` 方法。另外,也可以使用 `offer()` 方法来向队列中添加元素,该方法不会阻塞线程,如果队列已满则会返回 false。
阅读全文