我正在用 Java 编写一个多线程解决方案来连接两个系统 A 和 B。系统 A 是完全串行的,不是线程的,并且将提供数据以发送到系统 B。系统 B 同时异步接受来自多个源的数据时间。
我正在使用 ThreadPoolExecutor 来管理线程。我正在使用一个类 TP 的静态单例实例,它围绕着 ThreadPoolExecutor(也是静态的),因为系统 A 无法创建新对象,但它可以调用静态对象。
这是我卡住的地方。在全力以赴之前,我正在对设置进行一些非常基本的测试。我创建了两个测试类,T1 和 T2。这些类中的每一个都导入类 TP(创建静态单例的地方)。T1 将一些对象添加到 TP 队列,然后 T2 添加更多。
尽管 TP 对象被声明为静态,但看起来有两个版本并行运行。T2 提交到队列的对象在 T1 提交的对象全部执行完之前正在执行。此外,由于 T1 或 T2 都没有在 ThreadPoolExector 上调用 shutdown(),因此它们都挂起并且永远不会终止。
我如何创建一个线程的守护进程静态实例,只要我发送要处理的内容,即使是来自不同的 Java 可执行文件,它基本上都会唤醒?