gpt4 book ai didi

java - 在 OSGi 中实现等待方法而不停止其他包的线程

转载 作者:行者123 更新时间:2023-12-02 06:11:20 24 4
gpt4 key购买 nike

我在尝试集成实现倒计时的 OSGi bundle 以便在特定时间间隔内发送消息时遇到问题。这是由可运行的类或线程创建的。

这个想法是下一个;我有 bundle Sender、 bundle Receiver 和 bundle Countdown

发送者包在一段时间后发送一条消息,例如:5秒。

Sender ->Create message

Countdown -> Count to 5 s.

Receiver ->Receive the message after 5 s.

这只是我的应用程序的一个“比喻”,但是我相信您已经明白了。

我遇到的问题是下一个:当 bundle Countdown 运行 5 秒倒计时时, bundle Sender 停止工作(没关系,这里没有问题),但 bundle Receiver 也停止工作。我的想法是在单独的 bundle 中实现倒计时,以避免其他 bundle 停止工作,但我想我错了。

所以,我的问题是...如何实现倒计时,而不会不必要地停止 OSGi 应用程序的所有 bundle ?

提前致谢。

<小时/>

一些代码:

倒计时

public void countDown()
{
int i = delay;
while (i>0){
try {
i--;
Thread.sleep(1000); // 1000ms = 1 s
}
catch (InterruptedException e) {
//countdown failure? --> nah
}
}
}

发件人

Thread t = new Thread(new Countdown(5));
t.start();
while (t.isAlive());
System.out.println("Sending the message");

最佳答案

OSGi 包既不是单独的进程,也不是单独的线程。包不会“运行”——它的代码在任何时候都会发现自己位于零个或多个线程的执行路径上。

因此,您的问题根本不是关于 OSGi,而是关于 Java 中的通用多线程。如果您想在等待答案时阻塞一个线程,并希望其他代码继续运行,那么您必须确保其他代码有自己的线程可以运行。

关于java - 在 OSGi 中实现等待方法而不停止其他包的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21852814/

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