-
线程池参数优先级。 coreThread_size > queue_size > maxThread_size 当queue_size不够时,maxThread_size才生效
-
线程死锁。
两个线程各自拥有一把锁,然后又想去占用对方的锁。所以一个线程用到多个锁的情况就很危险,必须保证用锁的顺序永远是一致的,有些隐形的场景比如
OBJ有锁,然后BlockingQueue内部也有锁BlockingQueue bq; aF{ synchronized (obj){ bq.poll(10,TimeUnit.SECONDS); // WAITING 并没有释放 obj锁资源 导致bF函数线程在bp为空队列时永远无法获取obj锁 } } bF{ synchronized (obj) {//BLOCKED Log.e("smarking", "bq_test_bF"); } }
网友评论