繁体   English   中英

我在Java服务器中拥有五个线程,如何使它们同时运行一个任务?

[英]I hava five threads in java server, how should I do to make them run one task concurrently?

我用Java编写了一个Web服务器,并且需要一个任务类将数据上传到另一个服务器,所以我这样做如下:

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5)
executor.scheduleAtFixedRate(new Task(), 0, 100, TimeUnit.SECOND);

Task已实现Runnable 问题是,每次只有一个线程被调度运行此new Task() ,其他线程才处于空闲状态,如果有大量数据传入,则存储数据的工作队列变得非常大,更糟糕的是,我无法获得真实的花药服务器中的时间数据。 我的英语太糟糕了,如果您明白我的意思,我在徘徊,我想找到一种解决办法,您能帮我吗?

要一次运行5个任务,您需要5个任务,这些任务需要很长的时间才能使用不同的线程。 如果添加一个任务,它将使用一个线程。 如果添加5个小任务,它们可能全部由同一线程运行。

你有尝试过吗?

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5);
Task task=new Task();
executor.scheduleAtFixedRate(task, 0, 100, TimeUnit.SECOND);
executor.scheduleAtFixedRate(task, 0, 100, TimeUnit.SECOND);
executor.scheduleAtFixedRate(task, 0, 100, TimeUnit.SECOND);
executor.scheduleAtFixedRate(task, 0, 100, TimeUnit.SECOND);
executor.scheduleAtFixedRate(task, 0, 100, TimeUnit.SECOND);

这样,您将只有一个任务计划在5个线程中运行。 只要确保您具有Task thread safe (因为您将在5个线程中运行同一任务)即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM