gpt4 book ai didi

java - 如何将不同的线程分配给不使用 main 主线程的其他类的不同方法

转载 作者:行者123 更新时间:2023-12-02 12:46:27 28 4
gpt4 key购买 nike

假设我有一个主类Start.java

public class Start{
//Here I want to integrate the programs for which i will be needing threads
}

我还有两个类,其中包含两种不同的方法。

public class ReadUpdateDb {
public void updateDb(Statement stmt)
}

public class DbToXls {
public void dbtoXLS(Statement stmt)
}

这是我的问题:我不知道如何将两个不同的线程分配给方法 updateDb()dbtoXLS()

此外,我希望每两个小时运行一次 updateDb,每天运行一次 dbtoXLS

最佳答案

如上所述,ScheduledExecutorService 将完成这项工作。我还建议使用 Guava 的 ThreadFactoryBuilder 来命名线程,例如,将来调试会更容易。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

public class Start {

private static final Integer POOL_SIZE = 2;

private final ScheduledExecutorService schedExecutor = Executors
.newScheduledThreadPool(POOL_SIZE,
new ThreadFactoryBuilder().setNameFormat("Schedule-Updater-%d")
.setDaemon(true).build());

public void go() {
Statement stmt = null; // construct your statement here
ReadUpdateDb readUpdateDb = new ReadUpdateDb();
schedExecutor.scheduleAtFixedRate(() -> readUpdateDb.updateDb(stmt),
0, 2, TimeUnit.HOURS);
DbToXls dbToXls = new DbToXls();
schedExecutor.scheduleAtFixedRate(() -> dbToXls.dbtoXLS(stmt),
0, 1, TimeUnit.DAYS);
schedExecutor.shutdown();
}
}

希望对你有帮助!

关于java - 如何将不同的线程分配给不使用 main 主线程的其他类的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754950/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com