English 中文(简体)
如何处理线索. join in stop (), 如果 Init () 从未成功 。
原标题:How to handle thread.join in stop(), if init() was never successful

我有一个问题。 我写了一个 Java 程序, 我从一个守护进程开始。 所以我有一个课程, 我在那里执行守护进程和可运行 。 在 < code> init () () 中, 我做一些检查, 然后, 当检查正常时, 我开始一个新的线索 。

thread = new Thread(this);

如果检查有问题,我打给 stop () .in stop......我接到这个电话:

thread.join();

但是,如果我从来没有创建新的线索, 这怎么可能有效呢? 如果我没有创建新的线索。 我会得到一个 < code> NullPointerExpendion 。 我该如何处理这一问题? 抓住 < code> NullPointerExpendion ? 如果线索不是空的, 只需呼叫 < code>thread. join () ? 不要调用 < code>thread. join () ? 什么是最好的方法和原因? 谢谢:

我之所以提出这个问题,是因为我以前从未实施过守护进程,而且我也不知道该如何处理线条。也许我不应该问。谢谢。谢谢。

问题回答

这似乎有点像 Java 101 的答案 所以我不确定我是否理解这个问题。

在您 init () () () ) 方法中,您可能启动或可能不启动新线索并设置 thread 字段。在您的 stop () () 方法中, thread 字段可能是空的,也可能不是空的。如果您想要使用该线索的 join () () ) 字段,那么您将使用代码 :

   if (thread != null) {
      thread.join();
   }

应该避免捕捉 < code> NullPointer Exception 。 创建例外实际上是一个相当昂贵的过程, 特别是当它们拍下堆叠框架的快照时。 这里的一个很好的讨论引用了“ 有效 Java” 书, 指出例外比不例外慢了 ~ 70 倍 。

许多人使用例外,将状态信息退回给打电话者,但这是海事组织的坏模式。 例外是“ 例外” 条件, 并且 not 代替错误代码和返回的物体。

如果我不明白问题,请编辑您的职位,我会调整我的回答。

如果您扩展了apache 的接口守护程序, 那么如果 Init () 方法失败, 您必须丢弃 Deamon Init 例外 。 在线条上启动此选项永远不会被调用, 守护程序将中止执行 。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签