草庐IT

在线程中运行的 Java 方法

我了解线程背后的概念并用其他语言编写过线程,但我无法理解如何在Java中使它们适应我的需求。基本上,目前我有一个对象vector,它们是按顺序从文件中读入的。然后该文件有一个事件列表,这些事件需要同时发生,因此等待一个事件完成需要20-30秒是不可取的。对象中只有几个方法来处理这些事件。然而,从教程来看,对象必须扩展/实现线程/可运行,但是如果对象在线程中,则对该对象进行方法调用似乎无论如何都是按顺序发生的。任何额外的信息将不胜感激,因为我显然遗漏了一些我不太确定是什么的东西!总结一下如何使用线程执行单个方法? 最佳答案 要启动一个

java - Java中如何创建跨进程的Singleton类

是否可以创建一个通用的Singleton类,即在任何给定时间,多个Java进程之间只共享一个实例? 最佳答案 多个Java进程不共享同一个虚拟机。因此,您最终会得到一个托管单例的JVM实例,然后每个进程一个JVM实例使用远程方法调用访问单例,正如@LittleBobbyTables所建议的那样。无论如何考虑WhenisaSingletonnotaSingleton:MultipleSingletonsinTwoorMoreVirtualMachinesWhencopiesoftheSingletonclassruninmultipl

java.nio 与每个套接字的新线程

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在开发一个1对多服务器-客户端应用程序,这是一个小项目。由于套接字IO是阻塞的。我正在为此寻找解决方案。谁能告诉我这两种解决方案的优缺点?使用java.nio为每个连接的客户端新建一个线程。谢谢

java - 使用 Java 在线程之间传输数据

我正在编写一个模仿电影院的多线程应用程序。每个人都是自己的线程,并发必须完全由信号量完成。我遇到的唯一问题是如何基本上链接线程以便它们可以通信(例如通过管道)。例如:Customer[1]是一个线程,它获取一个信号量,让它走到BoxOffice。现在客户[1]必须告诉票房代理他们想看电影“X”。然后BoxOfficeAgent[1]也是一个线程,必须检查以确保电影未满,然后卖票或告诉Customer[1]选择另一部电影。如何在保持与信号量的并发性的同时来回传递该数据?此外,我可以从java.util.concurrent使用的唯一类是Semaphore类。

- [uiapplication委托]必须仅从主线程调用

这种警告导致了一个严重的问题,因为我真的无法使用Xcode9beta2在主线程外部的代表。我还认为,只能从主线程中召集代表,不是吗?那么,为什么这会导致该应用现在崩溃呢?看答案只需这样的主线程。Objective-Cdispatch_async(dispatch_get_main_queue(),^{[[UIApplicationdelegate]fooBar];});迅速DispatchQueue.main.async{YourUIControlMethod()}像这样接触您的应用程序委托,这暗示着您的架构可以使用一些清理。您可以从所需的任何线程中调用代表。您只需要确保自己在Uikit的主线

java - 从 java servlet 运行长进程的最佳方法是什么?

我想问一下从javaservlet运行一个长进程的最佳方法是什么。我有一个webapp,当客户端发出请求时,它会运行一个servlet。这个servlet应该从请求中获取一些参数,然后运行一个进程。这个过程可能需要很长时间,所以我需要单独运行它。当这个过程执行完成时,它会发送一封包含结果的电子邮件。提前致谢。 最佳答案 使用线程池。每次收到请求,就创建一个任务,提交给线程池。这将确保过多的请求不会使服务器崩溃,因为您可以控制可以拥有多少并发线程,以及可以在线程池的等待任务队列中等待多少任务。请参阅Executors的javadoc和

java - 对线程行为有点困惑

我在Thread中编写了一个基本代码,我得到的输出非常令人惊讶。publicclassThreadImpimplementsRunnable{publicstaticvoidmain(String[]args){ThreadImpthreadImp=newThreadImp();Threadt=newThread(threadImp);t.setName("Fred");t.start();threadImp.run();t.run();}publicvoidrun(){System.out.println("CurrentThread:"+Thread.currentThread()

java - 带线程的观察者模式

我想运行多个线程并在我的主要方法结束时加入它们,这样我就可以知道它们何时完成并处理一些信息。我不想将我的线程放在一个数组中并一个一个地执行join(),因为join是一种阻塞方法,我会在主线程中等待一些仍在运行的线程,而其他线程可能有已经完成,没有可能知道。我考虑过为我的线程实现观察者模式的可能性:一个带有update()方法的接口(interface),一个从线程扩展(或实现可运行)的抽象类,带有用于监听器的set和get方法,以及一个开始的类我所有的线程并等待它们完成。如果我的理解是正确的,观察者不会在线程的特定join()中阻塞。相反,它将以某种方式等待,直到线程调用update

java - 如何检测线程被IO阻塞?

在Java中,线程可以有不同的状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED但是,当线程被IO阻塞时,它的状态是“RUNNABLE”。如何判断它是否被IO阻塞? 最佳答案 NEW:线程已创建但尚未处理。可运行:该线程正在占用CPU并处理一个任务。(由于OS的资源分配,可能处于WAITING状态。)BLOCKED:线程正在等待另一个线程释放它的锁以获得监视器锁。JVISULVM将thta显示为监控WAITING:线程正在使用wait、join或park方法等待。TIME

java - 终止 JFrame 关闭上的运行线程

当用户关闭JFrame窗口时,我如何调用额外的操作?我必须停止现有线程。据我了解,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);会导致框架关闭并停止其线程。是否应在JFrame.EXIT_ON_CLOSE之后关闭线程?客户:staticbooleanTERMINATE=false;publicstaticvoidmain(String[]args){//somethreadscreatedwhile(true){if(TERMINATE){//dobeforeframeclosedbreak;}}}privatestaticJPanels