草庐IT

Tread多线程

全部标签

java - Java 应用程序服务器是否能够销毁线程?如果是,如何?

销毁线程在Java中已被弃用(并且未根据javadoc实现),并且中断它只是一个建议,希望线程退出,但可能不会这样做。(不提供任何方法来终止JVM内的线程是一个令人不安的设计,但我的问题与设计无关。)Java应用服务器如何卸载应用程序?他们是否能够以某种方式破坏正在卸载的应用程序的线程?如果是,如何?如果不是,那么具有无限循环的已部署应用程序的单个线程可能会在没有任何干预可能性的情况下导致整个应用程序服务器崩溃?抱歉,我不是为此编写测试用例,但我想知道那里到底发生了什么。 最佳答案 Nottoprovideanywaytokilla

java - 传递给函数的列表可以被 Java 中的另一个线程修改吗?

IntegergetElement(Listlist){inti=Random.getInt(list.size());returnlist.get(i);}问题:虽然这个函数是从一个线程调用的,但有没有办法可以通过另一个线程修改传递给这个函数的列表? 最佳答案 传递给您的函数的list是对列表对象的引用。如果任何其他线程引用了同一个列表对象,那么这不是线程安全的。 关于java-传递给函数的列表可以被Java中的另一个线程修改吗?,我们在StackOverflow上找到一个类似的问题:

java - 为什么 Java 中的用户级线程称为 "green"?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:GreenThreadsvsNonGreenThreads为什么Java线程在JVM中的用户级实现被称为“绿色线程”?是通过类比环保主义,意味着它们比OS线程更少浪费,还是其他?编辑:对该术语使用位置的一些引用:WikipediaJavathreadsFAQJavadocumentation

java - 在 Java 中使用 Thread#stop() 来终止一个正在运行的线程是否可以接受?

遗憾的是,在Java中对字符串使用正则表达式时无法指定超时。因此,如果您没有严格控制将哪些模式应用于哪些输入,您最终可能会拥有消耗大量CPU的线程,同时无休止地尝试将(设计不佳的)模式与(恶意的?)输入匹配。我知道Thread#stop()被弃用的原因(参见http://download.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html)。它们以可能在ThreadDeath异常情况下损坏的对象为中心,然后这些对象会污染您正在运行的JVM环境并可能导致细微的错误。对于比我对JVM的工作原理有更深

Java:当被另一个线程中断时,如何在线程上捕获 InterruptedException?

我正在开发一个多线程应用程序来连接到外部服务器-每个服务器都在单独的线程上-并且在有输入之前将被阻塞。其中每一个都扩展了Thread类。为了便于解释,我们称这些为“连接线程”。所有这些连接线程都存储在并发HashMap中。然后,我允许调用RESTfulWeb服务方法来取消任何线程。(我使用的是Grizzly/Jersey,所以每次调用都是一个单独的线程。)我检索特定的连接线程(从hashmap)并调用它的interrupt()方法。那么,问题来了,在连接线程中,我如何捕获InterruptedException?(当连接线程被外部RESTful命令停止时,我想做一些事情。)

java - 从屏幕捕获并保存到磁盘多线程

接下来的问题应该是观察屏幕、记录一个事件(测量文本框变为绿色)并记录导致它发生的所有事件,从而制作出导致它发生的事件的“电影”。不幸的是,需要记录整个屏幕。到目前为止,我已经完成了认可的部分。但是我每秒几乎没有两帧。我想要大约25到30fps。我的想法是在两个单独的线程中进行写作和阅读。因为写入事件很少见并且可以在后台运行,所以录制事件可以占用更多时间并运行得更快。不幸的是,整个事情似乎太慢了。我希望能够在事件发生前的10到20秒将屏幕写入磁盘。编辑:如果可能的话,我想尽可能保持平台独立。编辑2:Xuggler似乎有一个独立于平台的jar文件。不幸的是,我真的不知道如何将它用于我的目的

java - Java线程中的System.exit

我的主线程创建了一个新线程当新线程调用System.exit(-1)时,我的主线程被关闭。如何处理退出代码并保持主线程Activity?附言。新线程会调用其他.jar文件中的一些方法,所以我不能修改它。 最佳答案 你不能。终止当前运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。那是javadoc。因此该方法将终止整个JVM。不仅仅是线程.... 关于java-Java线程中的System.exit,我们在StackOverflow上找到一个类似的问题:

java - Java中如何判断一个线程是否已经启动?

这个问题在这里已经有了答案:InJava,howdoyoudetermineifathreadisrunning?(10个答案)关闭9年前。我有一个扩展Thread的类。我会在某个时候开始讨论。一段时间后我需要检查该线程是否已经启动?这样我就可以在那个特定点启动线程。我的线程类将是,publicclassBasicChatListenerextendsThread{publicvoidrun(){}}我需要知道BasicChatListener类的特定线程是否正在运行?因为我的应用程序中已经有多个线程在运行。我们的堆栈成员将如何帮助我。

java - 在java中创建后台线程的最佳方式

创建一个每15分钟运行一次以从数据库中获取数据的后台线程的最佳方法是什么?下面是我拥有的代码,我猜它可以在生产环境中正常工作,但是还有比我拥有的更好的方法或我应该注意的事情吗?privatestaticvoidcheckDatabaseEveryXMinutes(){newThread(){publicvoidrun(){while(true){try{Thread.sleep(checkingAfterEveryXMinutes);getDataFromDatabase();}catch(InterruptedExceptionex){//loghere}catch(Exceptio

java - 如何修复线程 "main"java.util.ConcurrentModificationException 中的异常

这个问题在这里已经有了答案:CananyoneexplainmeoverConcurrentModificationException?(1个回答)关闭9年前。我有2HashMap对象名称是positiveCoOrdinateandnegativeCoOrdinates.我正在检查PositiveCoOrdinates条件如下,满足则对应点加入negativeCoOrdinates并从positiveCoOrdinates中删除.HashMappositiveCoOrdinates=duelList.get(1);HashMapnegativecoOrdinates=duelList.