小编P_C*_*P_C的帖子

ThreadPoolExecutor 支持新线程而不是开源队列

我一直在使用 ThreadPoolExecutor 和 Spring,它是 ThreadPoolTask​​Executor。从 JDK 11 开始,没有内置的 ThreadPoolExecutor 和队列支持新线程而不是排队。同样,我找不到任何提供此功能的开源项目。

我想要的是一个 ThreadPoolExecutor 和队列,它将在提交新的 Runnable 时创建新线程,并且一旦达到队列的最大线程数。

我不想设置 coreThreads == maxThreads 因为我有 100 个线程。另外,我不想让所有核心线程都设置AllowCoreThreadTimeOut,因为我希望在提交可运行对象时有一些准备好响应。

是的,我可以使用 SynchronousQueue,但是当我们达到最大线程数并且不排队时,这会拒绝 Runnable。LinkedTransferQueue 可以工作,但需要修改。

我找到的唯一解决方案是:

    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(){
        private static final long serialVersionUID = 1L;
        @Override
        protected BlockingQueue<Runnable> createQueue(int queueCapacity) {
            BlockingQueue<Runnable> queue = new LinkedTransferQueue<Runnable>() {
                private static final long serialVersionUID = 1L;
                @Override
                public boolean offer(Runnable e) {
                    return tryTransfer(e);
                }
            };
            return queue;
        }
    };

    executor.setRejectedExecutionHandler(new RejectedExecutionHandler() {
        @Override
        public void rejectedExecution(Runnable r, …
Run Code Online (Sandbox Code Playgroud)

java threadpoolexecutor

6
推荐指数
0
解决办法
191
查看次数

JavaFX TableCell与Swing TableCellRenderer实例

这是我的问题,我有一个包含50列和10000行的表,所有数据都是字符串.在Swing中,我有一个TableCellRenderer,它呈现整个表的字符串.

在JavaFx中渲染相同的表我创建了50000个TableCell对象.

我在这里遗失了什么吗?这将永远不会有任何性能,分配50K的对象是不可接受的.

JavaFx中是否有一种方法只使用一个TableCell来呈现我的所有单元格并且具有与Swing类似的行为?

javafx javafx-2

3
推荐指数
1
解决办法
259
查看次数

标签 统计

java ×1

javafx ×1

javafx-2 ×1

threadpoolexecutor ×1