解决方案 »
- 如何使用正则添加img标签的max-width属性
- Java 正则表达式问题
- yield() 求助
- 高手们,我爱你们!
- “非法的表达式开始”及“需要为 class、interface 或 enum”的问题
- Socket能不能被序列化 想通过IO传给其他的类引用
- Microsoft SQL Server 2000 Driver for JDBC——Service Pack 1支持JDK1.5吗?
- 怎么把jTextArea1的内容保存为一个文件?
- 请教同一包内类的访问权限!怎么调试也出错!!!!
- 怎样使application运行时没有console窗口?
- 面试时怎么介绍自己的项目啊?每次介绍时,都感觉无从下口?求解?
- 我想用JAVA 簡單做一個接收LLDP封包的程式
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)在这构造方法中,优先级处理任务的优先级为:
核心线程corePoolSize、任务队列workQueue、最大线程maximumPoolSize。意思是只有当corePoolSize中任务满了,会先放到workQueue缓冲队列中,缓冲队列满了,才会放到maximumPoolSize里面去。
楼主可以把 BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(20);里面的20改成6或7看下效果。
要等到queue满了才会增加线程的,否则是不会超过coreSize个的
但不是说你的线程多,就可以无限上调最大线程数.当需要的线程数大于最大值时,也存在等待分配线程的资源,这种情况也是常有的,看具体要求了.
对于你的这个情况,倒是可以调大一些.
改了7 就是4个执行, 6 就是5个线程, 5 就报错了。
意思是这样? 先找核心线程 不够放就放进workQueue,还不够久加大直到最大线程? 再不够就报错了。。
我想问下, 怎么弄才能在超过最大线程之后 不报错 而是放入另外一个等待队列中呢?
意思是这样? 先找核心线程 不够放就放进workQueue,还不够久加大直到最大线程? 再不够就报错了。。
我想问下, 怎么弄才能在超过最大线程之后 不报错 而是放入另外一个等待队列中呢?
上一楼引用错了。
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) 当超过了又没线程执行,可以自己选择策略