gpt4 book ai didi

java - 将线程类作为守护进程运行

转载 作者:行者123 更新时间:2023-12-01 16:11:50 26 4
gpt4 key购买 nike

我正在用Java编写一个多线程解决方案来连接两个系统A和B。系统A是完全串行的,不是线程化的,并且将提供数据发送到系统B。系统B异步地接受来自多个源的数据同时。

我正在使用 ThreadPoolExecutor 来管理线程。我使用类 TP 的静态单例实例,它包装 ThreadPoolExecutor(也是静态的),因为系统 A 无法创建新对象,但它可以调用静态对象。

这就是我被困住的地方。在全力以赴之前,我正在对设置进行一些非常基本的测试。我创建了两个用于测试的类:T1 和 T2。这些类中的每一个都导入类 TP(静态单例在其中创建)。 T1 将一些对象添加到 TP 队列中,然后 T2 添加更多对象。

尽管 TP 对象被声明为静态,但看起来有两个版本并行运行。在 T1 提交的对象全部执行完之前,T2 提交到队列的对象正在执行。此外,由于 T1 或 T2 都没有调用 ThreadPoolExector 上的 shutdown(),因此它们都会挂起并且永远不会终止。

如何创建一个守护进程静态实例,只要我发送要处理的内容(甚至来自不同的 Java 可执行文件),该实例基本上都会被唤醒?

最佳答案

如果您正在运行两个单独的进程,那么您将拥有两个单独的类型和两个单独的实例,无论它是否是单例。

如果您希望两个不同的进程相互通信,则需要完全单独解决该问题。有许多不同的 IPC 机制可用 - 网络、命名管道(Java IIRC 中的技巧)、内存映射文件、一个简单的共享目录(一个进程在其中放置任务供另一个进程处理)等。

也不清楚挂起的是什么,或者线程池是如何配置的。如果问题确实是线程方面(而不是 IPC 方面),那么请发布一个简短但完整的程序来演示该问题。

关于java - 将线程类作为守护进程运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/870410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com