我正在编写一个Java应用程序,我在其中编写一个线程程序来读取文件。每次运行程序时,它都会创建一个线程并读取该文件。它很耗时,我知道文件永远不会改变所以我想创建一个守护程序线程,它只读取一次文件并将其存储在一个字符串中。
我面临几个问题 - 1)一旦我启动守护程序线程,我如何再次访问它? 2)如果我想停止守护程序线程,我该怎么办?
请帮忙。
感谢,
答案 0 :(得分:2)
我认为你对守护程序线程的工作方式感到困惑。如果应用程序是唯一运行的线程,则守护程序线程不会阻止应用程序退出;用户线程。如果您知道该文件永远不会更改,为什么不在不使用任何线程的情况下加载一次?此外,在您的守护程序线程完成文件加载之后(即run()方法正常完成),除非您在run()方法中有无限循环,否则它将自动由运行时处理。 IMO发布了一些代码可以帮助解决问题。
答案 1 :(得分:1)
我想,您的守护程序将存在于不同的虚拟机中,在这种情况下,您无法从应用程序访问String。
答案 2 :(得分:0)
如果要访问线程,只需保留对Thread对象的引用。同样,如果要访问字符串,请保留对String对象的引用。这些引用可以存储为静态变量,但不一定是。
不推荐通过Thread.stop()或Thread.suspend()直接停止线程。有关原因的说明以及停止线程的“正确”方法,请参阅this article。