Java 如果用户线程已经完成了工作,是否有任何技术可以强制守护进程线程完成某些任务?
在我的主程序中,我运行1个用户线程,它的所有子线程都是守护进程线程。因此,当用户线程完成其工作时,所有守护进程线程也将终止。我正在守护进程线程中执行一些代码块,这些代码块必须在线程终止之前完成Java 如果用户线程已经完成了工作,是否有任何技术可以强制守护进程线程完成某些任务?,java,multithreading,Java,Multithreading,在我的主程序中,我运行1个用户线程,它的所有子线程都是守护进程线程。因此,当用户线程完成其工作时,所有守护进程线程也将终止。我正在守护进程线程中执行一些代码块,这些代码块必须在线程终止之前完成 如果用户线程完成了工作,是否可以在守护进程线程中等待特定的块执行?首先,如果确实需要某个线程运行某个代码块来完成执行,那么该线程实际上不是守护进程线程 但是,为了完成您的要求,您可以让主线程先通过等待守护进程线程,如果确实需要某个线程运行某个代码块来完成执行,那么该线程实际上不是守护进程线程 但是,为了完
如果用户线程完成了工作,是否可以在守护进程线程中等待特定的块执行?首先,如果确实需要某个线程运行某个代码块来完成执行,那么该线程实际上不是守护进程线程
但是,为了完成您的要求,您可以让主线程先通过等待守护进程线程,如果确实需要某个线程运行某个代码块来完成执行,那么该线程实际上不是守护进程线程
但是,为了完成您的要求,您可以让主线程通过等待守护进程线程。您是否查看了倒计时闩锁或循环屏障
你看过倒计时闩锁或循环屏障了吗
您可以通过不同的方式实现这一点 使用Thread.join; 使用观察者可观察模式 使用倒计时锁存器
您可以通过不同的方式实现这一点 使用Thread.join; 使用观察者可观察模式 使用倒计时锁存器
我认为这取决于你真正想做什么: 您希望避免恶魔线程在处于关键部分时被关闭。 解决方案:demon线程在本节中获得读锁,而用户线程必须在死之前获得写锁。 您有一个相当独立的代码块要在关闭前执行。 解决方案:关闭吊钩 Runtime.getRuntime.addShutdownHooknew线程{ public void运行{database.close;} }; 您希望优雅地关闭线程。解决方案:使用用户线程。打断他们以阻止他们。使用其中一个命名的解决方案等待 更详细的项目符号1: 这是基于
我认为这取决于你真正想做什么: 您希望避免恶魔线程在处于关键部分时被关闭。 解决方案:demon线程在本节中获得读锁,而用户线程必须在死之前获得写锁。 您有一个相当独立的代码块要在关闭前执行。 解决方案:关闭吊钩 Runtime.getRuntime.addShutdownHooknew线程{ public void运行{database.close;} }; 您希望优雅地关闭线程。解决方案:使用用户线程。打断他们以阻止他们。使用其中一个命名的解决方案等待 更详细的项目符号1: 这是基于
您是否尝试过Thread.join?如果您必须等待线程中的某些内容完成,为什么它是守护进程线程。我会把它做成普通的线。没有必要使后台线程成为守护进程。@PeterLawrey我正在守护进程线程中运行一些无限循环。因此,如果我试图以正常方式停止应用程序,那么如果我使用用户线程,它就无法停止。我仍然需要在守护进程终止之前完成启动的部分代码。你可以用一个标志告诉线程正常关闭,因为只有它们知道何时完成它们需要做的事情。你尝试过Thread.join吗?如果你必须等待线程中的某个内容完成,为什么它是守护进程线程。我会把它做成普通的线。没有必要使后台线程成为守护进程。@PeterLawrey我正在守护进程线程中运行一些无限循环。因此,如果我试图以正常方式停止应用程序,那么如果我使用用户线程,它就无法停止。我仍然需要在守护进程终止之前完成启动的部分代码。您可以用一个标志告诉线程正常关闭,因为只有它们知道何时完成它们需要做的事情。
// Demon
Lock l = readWriteLock.getReadLock();
l.lock(); // Will wait here if WriteLock is requested
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
// User
Lock l = readWriteLock.getWriteLock();
l.lock(); // Will wait here until all readLock are unlocked
// no need to unlock. Dys anyway