我有2种方法methodA,methodB。它们在不同的线程上运行。我希望methodB在启动methodA之后以100毫秒的延迟运行,该怎么办?
编码
final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(3);
executor.schedule(() -> highs(), 100, TimeUnit.MILLISECONDS);
new Thread(() -> highs()).start();
new Thread(() -> deleteRecords()).start();
我注意到,鄙视此方法,方法B始终在方法A之前运行。
最佳答案
通过让ThreadPool
立即执行一个线程,然后在一个100ms之后进行调度,您将获得所需的效果(让一个线程运行methodA
,然后另一个线程在100毫秒后运行methodB
) 。我写了一个小例子来测试:
public class Main {
public static void main (String[] args) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(3);
executor.execute(() -> methodA());
executor.schedule(() -> methodB(), 100, TimeUnit.MILLISECONDS);
}
public static void methodA(){
System.out.println("A: " + System.currentTimeMillis());
}
public static void methodB(){
System.out.println("B: " + System.currentTimeMillis());
}
}
该程序产生以下输出:
A: 1575782281388
B: 1575782281492