草庐IT

event-dispatch-thread

全部标签

java - 你如何使用事件调度线程?

我了解到swing不是线程安全的。深入研究,我发现对swing组件的每次修改都必须在事件调度线程上完成,以防止与多线程相关的各种问题。然而,信息似乎就此止步了。似乎没有很好的教程来解释如何在Internet上的任何地方执行此操作。将发布的代码中与其他问题相关的信息拼凑在一起,似乎我必须在我的程序中的每个swing修改周围放置一个不整洁的代码块(就像我自己代码中的这个例子):try{SwingUtilities.invokeAndWait(newRunnable(){publicvoidrun(){setTitle("Frametitle");setDefaultCloseOperati

java - 如何使用 PowerMock 模拟 Thread.sleep()?

如何使用PowerMock模拟Thread.sleep()?示例接口(interface)和类:publicinterfaceMachine{voidsleep(longmillis);}publicclassMachineImplimplementsMachine{privatestaticfinalLoggerlogger=Logger.getLogger(MachineImpl.class);@Overridepublicvoidsleep(longmillis){try{if(millis>0){logger.trace(String.format("Trytosleepfor

java - 如何实现多个 'threads'只在一个线程中运行

最近我一直在想:他们如何在一个线程中实现多个“线程”?我的意思是,他们如何在一个线程中实现多段并行运行的代码?他们如何保存“线程”的状态、创建中断并将CPU传递给下一个线程?我认为ScalaActor实现了这一点。但是如何呢?这个对于JVM或者C都可以回答,没关系。我真的很想了解它的理论。 最佳答案 我觉得你很困惑coroutines和greenthreads在这里。协程在准备执行时放弃控制,没有任何中断,所以中断的问题在这里无关紧要。Scala参与者作为协程实现。绿色线程是虚拟机在不使用native操作系统功能的情况下实现的用户模

C#事件(event)的理解

一、多播委托的应用--观察者模式遇到一个开发的问题?面试者:以面向对象的思想实现一下的场景:猫:Miao一声,紧接着引发了一系列的行为~Miao:引发了一系列的动作;从代码层面来说:代码这样写好吗?猫职责不单一(猫就是猫,他的行为只有Miao一声)依赖太重,依赖了很多的普通类;被依赖的类如果修改,可能会引发这个猫也要修改;---代码不稳定;如果要控制顺序---也要修改代码;有新需求,必须要修改历史代码---开闭原则;从传统的方式去考虑的话,我们可能会写出来这个如此这样的代码classDog{publicvoidBark(){Console.WriteLine("DogBark!");}}cla

java - Future.get() 是 Thread.join() 的替代品吗?

我想编写一个永远运行的命令行守护进程。我知道如果我希望JVM能够在linux中正常关闭,则需要通过一些C代码包装Bootstrap。我想我现在可以使用关闭Hook。关于我的问题:我的main(String[])block将启动一个单独的Superdaemon。Superdaemon将永远轮询和循环。所以通常我会这样做:classSuperdaemonextendsThread{...}classBootstrap{publicstaticvoidmain(String[]args){Threadt=newSuperdaemon();t.start();t.join();}}现在我想如果

java.lang.IllegalStateException : Not on FX application thread; currentThread = Thread-4 错误

我正在尝试从Thread设置Text对象的字符串,但它给了我这个错误:Exceptioninthread"Thread-4"java.lang.IllegalStateException:NotonFXapplicationthread;currentThread=Thread-4atcom.sun.javafx.tk.Toolkit.checkFxUserThread(UnknownSource)atcom.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(UnknownSource)atjavafx.scene.Scene

java - Swing - 更新标签

我有一个消息标签和一个提交按钮。提交按钮将被按下多次,每次按下的操作最多可能需要一分钟。按下按钮时,我想将消息设置为空,任务完成后,我想将消息设置为“完成”。privatevoidsubmitActionPerformed(java.awt.event.ActionEventevt){message="";updateMessageLabel();doTheTask();/*thisupdateisapplytothelabelaftercompletion*/message="Complete";}是否可以在submitActionPerformed()方法运行之前(或在方法中)但在

java - 为什么使用 Thread.currentThread().isInterrupted() 而不是 isInterrupted()?

我对Thread子类取消政策的实现有疑问。这样做似乎是常见的做法:classAextendsThread{[...]publicfinalvoidrun(){try{while(!Thread.currentThread().isInterrupted()){[...]}}catch(InterruptedExceptionconsumed){}}publicfinalvoidcancel(){interrupt();}}我的问题是关于Thread.currentThread()...为什么通常的做法是使用currentThread()来检查中断标志而不是在cancel()方法中设置它

java - 使用 Thread.sleep 进行测试

使用Thread.sleep()加速测试的推荐方法是什么。我正在测试一个具有重试功能的网络库,当连接断开或发生超时错误等时。然而,该库在重试之间使用了Thread.sleep()(因此它不会服务器重新启动时t连接数千次)。该调用显着减慢了单元测试速度,我想知道有哪些选项可以覆盖它。请注意,我愿意实际更改代码,或使用模拟框架来模拟Thread.sleep(),但我想先听听您的意见/建议。 最佳答案 将与时间相关的功能委托(delegate)给单独的组件通常是个好主意。这包括获取当前时间,以及像Thread.sleep()这样的延迟。这

java - 如何将 EDT 的结果传回另一个线程?

我有以下用例:我有代码在线程A中执行(不是EDT)。然后我想问用户一个问题,但这必须在EDT上完成,因为它涉及Swing代码(打开对话框等)。最后,我想将用户的回答传回线程A,以便它继续。我正在努力寻找一种将用户的答案传递回线程A的好方法。你是怎么做到的? 最佳答案 FutureTaskdialogTask=newFutureTask(newCallable(){@OverridepublicIntegercall(){returnJOptionPane.showConfirmDialog(...);}});SwingUtiliti