当前位置: 首页 > 面试题库 >

如何按需挂起Java线程?

姜智渊
2023-03-14
问题内容

我正在用Java开发多线程游戏。我有几个工作线程,它们从中央线程管理器中获取模块,然后由它自己执行。现在,我希望能够暂停这样的线程,如果它暂时没有任何执行。我试过从线程管理器上调用wait()方法,但这只会导致它忽略紧随其后的notify()调用。

我也在谷歌上搜索了一下,只是发现大多数站点都引用了suspend(),pause()等函数,这些函数现在在java文档页面上已被标记为已弃用。

因此,一般来说,按需暂停或继续执行线程的方式是什么?


问题答案:

如果要停止线程的操作,可以在线程中使用if块,并将其变量设置为false。如果线程正在执行循环,则效果最好。



 类似资料:
  • 问题内容: 我正在尝试的代码 我们如何根据其ID暂停/暂停线程?Thread.suspend已过时,必须有一些替代方法来实现。我有线程ID,我想挂起并杀死线程。 编辑:我用这个。 但是我无法停止该线程。 问题答案: 这些天杀死线程的正确方法就是使用它。这集真和原因,以及一些其他的方法来扔。 在线程代码内部,您应该执行类似以下的操作,检查以确保它没有被中断。 这是一个如何在线程内部处理中断异常的示例

  • 问题内容: 伙计们,我现在感觉真的很愚蠢。…基本上我是通过本地计算机上的TCP连接的…并且当我尝试在客户端创建In / out流时,不会通过创建对象输入流。是什么赋予了?这在打印2之后停止…没有异常或任何事情…这不是我第一次使用此类,这是我感到困惑的部分原因。 问题答案: 根据ObjectInputStream 的规范: 该构造函数将阻塞,直到相应的ObjectOutputStream写入并刷新了

  • 问题内容: 使用不同的Java库执行数百万个HTTP请求,使我陷入困境: 这是功能。 我试图设置Apche Http Client,并在所有可能的超时(我希望)上超时,但仍然 (可能无限)挂起。如何摆脱它们? 挂断率大约是每10000个请求〜1(对10000个不同的主机),并且可能会永远持续下去(我已确认线程挂起在10小时后仍然有效)。 Windows 7上的JDK 1.8。 我的工厂: 我的工厂

  • 问题内容: 很抱歉,这篇文章很长,但我想知道在向Sun提交错误报告之前是否能对此引起更多的关注。 JVM:6u11 操作系统:Windows XP SP3 硬件:AMD Athlon 64 X2 4600+ @ 2.41GHz,具有3.25 GB RAM。 我相信我在JVM中遇到了一个错误,在该错误中没有给线程任何监视器。在以下线程跟踪中,监视器是由捕获的,最终等待了它。该线程随后被通知。但是,即

  • 问题内容: 与此问题相关,我有以下代码可订阅redispubsub队列,并使用__init__中提供的处理程序将消息提供给处理它们的类: 在上面的链接问题中,请注意,如果断开连接,则永不返回。因此,尽管我的函数可以被调用,但它实际上不会导致线程终止,因为它挂在对线程内部的调用上。 链接问题的可接受答案提到了黑客入侵redis-py的连接池。我真的不想这样做,并且有一个分支版本的redis- py(