我想通过按下一个按钮使一个线程在GUI中暂停,并且可以使用或释放该线程,直到单击相同的按钮,这在java中是可能的。和任何想法如何完成?我正在使用Swing GUI暂停线程使它可以自由地做其他事情,并在java中的特定时间后继续?
回答
你可能不想做Thread.sleep的接受答案,也许应该学习Swing Event Queue是如何工作的。
你想看看:
http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html
特别:
也看到这些帖子计算器:
您可以通过不做任何事情来模拟暂停。
为了模拟,你需要的是由该线程具有参考按钮切换一个布尔值。如果这是真的,那么执行你通常会做的事,否则就睡一会儿。
这是我知道如何的唯一方法。
是的,我知道这种方式,但我想要的线程是免费的,可以使用 – 2012-03-21 00:27:51
Thread.sleep(4000);
http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html
或较新的
TimeUnit.SECONDS.sleep(4);
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/TimeUnit.html
有暂停线程并立即进行其他作业,然后才能够恢复需求是相同的线程没有简单的方法。
您可以暂停使用Thread.sleep()方法的线程,然后有其他线程做的工作,但暂停的线程将被阻塞,无法做更多的工作,直至取消暂停或中断。
由于线程来跟踪它的堆栈和所有依照其执行的变量,这将是相当困难的暂停执行中的一个流程,并把它取消暂停之前做其他工作。值得注意的是,没有理由甚至试图做到这一点,因为你的尝试只会重复线程已经做了什么(跟踪堆栈等)。所以你需要做的是让另一个线程在你暂停第一个线程时做你想做的事情。
长话短说,用了Thread.sleep()暂停,并创建额外的线程做你的其他工作(虽然暂停,你不能使用线程暂停其他工作)。
在多线程中,如果没有线程本身的协作,就无法真正安全地“强制”线程停止/暂停。 (Java有一些设计错误的方法来尝试这种Thread.suspend(),你可以阅读它们为什么被弃用)。
暂停线程的常用方法是设置布尔标志并让该线程轮询该状态。这样,它可以安全地暂停或关闭,而不会导致死锁等
此外,作为@Perry指明了工作线程可能会通过无关干脆睡觉。防爆。一个处理入队请求的线程。如果队列是空的,那么它只是静静地等待新的请求。
- 1. 经过暂停,暂停或等待事件被解雇后,我怎么知道它何时可以继续
- 2. 暂停并通知Java Web服务中的特定线程
- 3. Java ExecutorService暂停/恢复特定线程
- 4. AVPlayer在暂停后继续从URL缓冲多长时间?
- 5. 动画还在,当主线程做其他事情时
- 6. Nodejs:在res.send之后做其他事情
- 7. 天气API不加载并且线程继续暂停
- 8. 暂停while循环,并在Matlab中做别的事情
- 9. 暂停iPhone中的特定线程?
- 10. MPMusicPlayerController在后台暂停并在应用程序进入前台时继续
- 11. 在JAVA中以特定时间间隔运行特定时间的线程
- 12. 如何在函数中间暂停(延迟返回)并继续事件
- 13. BCP在上传过程中暂停 - 在ctrl-C后继续C
- 14. 如何使后台线程暂停,然后继续点击按钮?
- 15. TCP在监听时做其他事情
- 16. Java线程:是否可以查看/暂停/杀死在同一个JVM上运行的其他Java程序中的特定线程?
- 17. 暂停/停止并继续启动/恢复Java TimerTask?
- 18. 如何继续按键或做批量输入1做其他事情
- 19. 可以使用BackgroundWorker的ReportProgress来做其他事情吗?
- 20. 停止暂停继续两个同步线程
- 21. 我该如何使用boost :: thread临时暂停其他线程?
- 22. VB:如何暂停一个循环一定的时间,然后继续?
- 23. 暂停一个会话,但继续处理其他
- 24. 问题在暂停posix线程在特定的时间间隔c
- 25. 如何在特定时间段内运行python脚本,暂停它,确定它在代码中的位置,然后继续它?
- 26. Java在暂停后继续循环剪辑
- 27. 是否可以防止Bootstrap传送带在鼠标悬停时暂停并继续自动循环?
- 28. 如何暂停关键帧,然后在一段时间后继续播放?
- 29. 在线程之间做一次事情
- 30. 在forloop中使用setTimeout来暂停并在几秒钟后继续循环
答案是肯定的..你可以添加更多的细节像它的UI库(摇摆):) – 2012-03-21 00:21:42
是我正在使用Swing什么更多的信息,你会喜欢更多,所以我可以编辑的问题,并添加他们 – 2012-03-21 00:22:45
@dorinaji你是什么意思,你想'线程'被使用?你想让它运行一个完全不同的任务? – Jeffrey 2012-03-21 00:31:51