java - 以不同的 sleep 时间同时运行两个线程

标签 java multithreading

我有一种情况,每分钟运行一次线程1,每小时运行一次线程2。我怎样才能做到这一点。

目前我有一个工作代码可以在每分钟后运行 thread1。

主要方法

    static void main(string args[]){
      orderListner thread1 = new orderListner();
      thread1.start();
    }

线程1

    public static void orderListner extends thread{
      public void run(){
        while(true){
          process();
          thread.sleep(60000);
        }
      }
    }

现在我需要为每小时运行一次的结果启动新线程。我如何同时实现这个(线程1将连续运行,线程2应该每小时启动)

最佳答案

我建议您使用ScheduledExecutorService集中这些任务。

<小时/>
public final class ScheduledExecutorServiceDemo {
    private static final ScheduledExecutorService exec = 
        Executors.newScheduledThreadPool(2);

    public static void main(String[] args){
        // Schedule first task
        exec.scheduleAtFixedRate(new Runnable(){
            @Override
            public void run() {
                // do stuff
            }}, 0, 1, TimeUnit.MINUTES);

        // Schedule second task
        exec.scheduleAtFixedRate(new Runnable(){
            @Override
            public void run() {
                // do stuff
            }}, 0, 1, TimeUnit.HOURS);
    }
}

关于java - 以不同的 sleep 时间同时运行两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114215/

相关文章:

java - 如何将 Android Studio 项目推送到远程 GitLab 存储库

java - 编码和序列化

python - getattr/setattr/hasattr/delattr 线程安全吗?

c - openmp中的Pi不依赖于线程

java - 在 OpenLayers 中取消选择选定的标记/vector

Java Spring 内联文本编辑器

java - 启用 jack 的 Android Studio 构建错误

java - 如何在 Java 中停止一个线程

java - 使用反射从函数中删除同步关键字

java - 服务器如何向其他客户端广播消息?