当前位置: 首页 > 知识库问答 >
问题:

Java线程执行器提交主类

房项禹
2023-03-14
private ScheduledExecutorService scheduledThreadPool; //used for creating other threads
private Thread t;

public Test() {
    t = new Thread() {
        @Override
        public void run() {
            try {
                while (true) {
                    processUpdates();
                    Thread.sleep(10);
                }
            } catch (InterruptedException e) {
                logger.error(e);
            }
        }
    };
}

private void processUpdates() {
    //do some stuff
}
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

public Test() {
    scheduledThreadPool.scheduleWithFixedDelay(this, 0, 10, TimeUnit.MILLISECONDS);
}

@ Override
public void run() {
    processUpdates();
}

private void processUpdates() {
    //do some stuff
}

谢了!

共有1个答案

吕森
2023-03-14

总是在普通的旧线程上使用线程池:它让您对线程的执行有更多的控制。

如果希望所有线程并行运行,可以始终使用无限制的线程池,这是不鼓励的,因为thread内存开销很大。

在您的情况下,更建议使用scheduledexecutorservice,因为它避免了线程实现中的sleep指令。它提供了更好的性能和更好的可读性。

 类似资料:
  • 我有一个应用程序,允许用户批量向图像添加水印。该应用程序将只使用一个线程,并且一次只能添加一个水印。 我希望用户能够更改一次运行的水印任务[线程]的数量:可能在设置中为[1-5],并且我不能使用固定的ThreadPool,因为它具有固定的池大小。 我研究了如何使用线程池执行器(ThreadPoolExecutor)私有静态线程池执行器(ThreadPoolExecutor)=(ThreadPool

  • 我确信这两个列表都不是空的,并且正在调用,但是没有调用order execution run方法....

  • Java SE6文档中的ThreadPoolExecutor类具有以下方法: 返回正在积极执行任务的线程的大致数目。 这里近似和积极执行是什么意思? 在调用之前、期间和之后,是否保证 null 我已经研究了线程池执行器监视需求,以及如何在java中判断线程池中是否有可用的线程,但它们没有回答我的查询。

  • 本文向大家介绍iOS 在主线程上执行,包括了iOS 在主线程上执行的使用技巧和注意事项,需要的朋友参考一下 示例 当异步执行任务时,通常需要确保在主线程上运行一段代码。例如,您可能要异步访问REST API,但将结果放在屏幕上的UILabel中。在更新UILabel之前,必须确保您的代码在主线程上运行: 每当您更新屏幕上的视图时,请始终确保您正在主线程上执行此操作,否则可能会发生未定义的行为。

  • 我正在使用线程池执行器更改遗留设计。详情如下:- 遗留:-对于遗留设计,在应用程序启动时创建600个线程。和放置在各种池中,然后在需要时提取这些池,并将任务分配给相应的线程。 新:-在新设计中,我将线程池替换为执行器服务 我观察到的是,对于Executor,在启动时不会创建线程。它们是在从客户端激发请求时创建的。因此,与前一个线程相比,在内存中创建的线程要少得多。 但我的问题是,这样做是否正确,因

  • 问题内容: 我一直在尝试解决涉及使用wait()和notify()的线程通信的问题。基本上我有2个线程T1和T2,我希望它们按以下顺序执行 T1,T2,T1,T2 .....我该如何实现? 实际的问题:有两个线程T1-打印奇数(例如1-100),而T2-打印偶数(1-100)。现在,输出应为1,2,3,4,5,.... 100 问题答案: 您描述了生产者-消费者模式。 它是Java的实现,在许多J

  • 我们有一个场景,提交给ThreadPoolExecitor的任务长时间运行。当线程池启动时,我们以核心池大小=5、最大池大小=20和队列大小为10启动它。在我们的应用程序中,大约有10个任务被提交。大多数时候,这些任务运行几分钟/小时,然后完成。但是有一种情况,所有5个任务都挂在I/O上。因此,我的核心池大小达到了最大值,但我的ThreadpoolExector队列未满。所以额外的5个任务从未有机

  • 我使用线程池执行器,将其替换为旧版线程。 我创建了如下执行器: 这里的核心大小是maxpoolsize/5。我已经在应用程序启动时预先启动了所有核心线程,大约160个线程。 在传统设计中,我们创建并启动了大约670个线程。 但关键是,即使在使用Executor并创建和替换遗留设计之后,我们也不会得到更好的结果。 对于结果内存管理,我们使用Top命令来查看内存使用情况。对于时间,我们将System.