如何控制守护进程线程?

时间:2010-08-15 15:46:54

标签: java multithreading

我正在编写一个Java应用程序,我在其中编写一个线程程序来读取文件。每次运行程序时,它都会创建一个线程并读取该文件。它很耗时,我知道文件永远不会改变所以我想创建一个守护程序线程,它只读取一次文件并将其存储在一个字符串中。

我面临几个问题 - 1)一旦我启动守护程序线程,我如何再次访问它? 2)如果我想停止守护程序线程,我该怎么办?

请帮忙。

感谢,

3 个答案:

答案 0 :(得分:2)

我认为你对守护程序线程的工作方式感到困惑。如果应用程序是唯一运行的线程,则守护程序线程不会阻止应用程序退出;用户线程。如果您知道该文件永远不会更改,为什么不在不使用任何线程的情况下加载一次?此外,在您的守护程序线程完成文件加载之后(即run()方法正常完成),除非您在run()方法中有无限循环,否则它将自动由运行时处理。 IMO发布了一些代码可以帮助解决问题。

答案 1 :(得分:1)

我想,您的守护程序将存在于不同的虚拟机中,在这种情况下,您无法从应用程序访问String。

答案 2 :(得分:0)

如果要访问线程,只需保留对Thread对象的引用。同样,如果要访问字符串,请保留对String对象的引用。这些引用可以存储为静态变量,但不一定是。

不推荐通过Thread.stop()或Thread.suspend()直接停止线程。有关原因的说明以及停止线程的“正确”方法,请参阅this article