我希望有一个方法来检查数据库中是否每秒都有更新,如果方法在数据库中发现了更改,它将调用另一个方法来执行所需的操作。
我面临的问题是我想要一种方法,即使它调用另一种方法执行一个操作块,也会每秒重复一次。
我该怎么做?
我已经使用过此代码
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable r = new Runnable() {
@Override
public void run() {
try {
CheckNewRequest();
System.out.println("rode road rowd rowed");
} catch (Exception e) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, e.toString(), "Error CheckNewRequest()", JOptionPane.INFORMATION_MESSAGE);
}
}
};
scheduler.scheduleAtFixedRate(r, 0, 1, TimeUnit.SECONDS);
其中TimeUnit = 1000,但问题是它不会在指定的时间内重复出现。
答案 0 :(得分:0)
您的核心池大小为1(var ni = new CultureInfo(CultureInfo.CurrentCulture.Name).NumberFormat;
ni.NumberDecimalDigits = 0; //Keep the ".00" from appearing
ni.NumberGroupSeparator = " "; //Set the group separator to a space
ni.NumberGroupSizes = new int[] { 3 }; //Groups of 3 digits
var dig = 123456789;
Console.WriteLine(dig.ToString("N", ni));
),因此您一次只能执行一个线程,等待执行将进入队列(如果队列已满,执行程序将只创建新线程并且只有当线程再次空闲时才执行它们。
我建议更改核心池大小以匹配您需要的并行线程数,并且您可以从请求采用的时间推断出,如果需要5秒,那么当一个线程请求其他第四个线程时在他之前开始运行(因为你的时间是一秒),这意味着你需要5个线程。