Java 在同一类的两个不同实例上定义的线程之间的通信?

Java 在同一类的两个不同实例上定义的线程之间的通信?,java,multithreading,Java,Multithreading,我有一个类(比如)Task.java,它执行一些任务调度活动。 这个类包含两种类型的活动-1)计划周期性任务和2)计划非周期性任务。 定期任务的优先级高于非定期任务 public class Task implements Runnable{ ArrayList<> list; public Task(ArrayList<> list){ this.list = list; } public void run(){ handlePeriodic

我有一个类(比如)
Task.java
,它执行一些任务调度活动。 这个类包含两种类型的活动-1)计划周期性任务和2)计划非周期性任务。 定期任务的优先级高于非定期任务

public class Task implements Runnable{
  ArrayList<> list;
  public Task(ArrayList<> list){
    this.list = list;
  }
public void run(){
    handlePeriodicTask(){...}
    handleAPeriodicTask(){...}
  }
}
我希望两个子列表中的所有周期性任务都可以独立调度,但是非周期性的(因为它们本质上是非周期的),如果已经由另一个线程调度,则需要事先知道。如果是这样,当前线程应该忽略它们。 我不知道如何在两个不同实例上创建的两个线程上通过
wait()
notify()
实现这种通信。我已经看到了几个在单个实例上运行的
wait()
notify()
示例,但是如何在两个不同的实例上实现这一点。我不太精通多线程,所以这个问题可能很愚蠢/无效,但我需要适当的指导。 任何人请引导我。
谢谢。

不要单独启动线程,如果您试图实现的解决方案会导致生成太多线程。最好使用线程池管理器(
Executor-Service
-)。这将帮助您实现多项功能—以更可控的方式启动线程、基于环境配置线程数(池大小)、跨所有平台管理线程的可靠机制。您的所有定期任务都可以交给执行者服务来启动。

您可以创建一个共享对象(可能是静态对象),然后您可以使用wait和notify对该对象应用锁定和解锁。不,但这里我只生成两个线程,为什么您说这会导致生成许多线程。使用
wait()
notify()
,这难道不可能吗?
public class Main{
  ArrayList<> globalList;

  //splitting globalList to get two sublists
  ArrayList<> subList1; 
  ArrayList<> subList2;
  public static void main(..){
     Task task1 = new Task(subList1);

     Task task2 = new Task(subList1);
     new Thread(task1).start();
     new Thread(task2).start();
  }
}