为了改变这个问题:我应该避免共享在不同线程之间实现java.sql.Connection的类的实例吗?
我花了整整一天的时间试图让我的应用程序使用线程,但没有运气。 我已经阅读了很多关于它的文档,但是我仍然有很多错误,所以我希望你能帮助我。 我有一个很耗时的方法调用数据库并更新GUI。 这一直发生(或大约每30秒)。 public class UpdateController { private UserController _userController; public UpdateController(LoginController loginController, UserController userController) { _userController = userController; loginController.LoginEvent += Update; } public void Update() { BackgroundWorker backgroundWorker = new BackgroundWorker(); while(true) { backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); backgroundWorker.RunWorkerAsync(); } } public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { _userController.UpdateUsersOnMap(); } } 使用这种方法,我得到一个exception,因为背景工作不是和STA线程(但从我能理解这是我应该使用)。 我已经尝试了一个STA线程,并给了其他错误。 我认为这个问题是因为我尝试在进行数据库调用时更新GUI(在后台线程中)。 […]
可能是重复! 我正在使用Tomcat作为我的服务器,并且想知道在servlet中产生具有确定性结果的线程的最佳方法。 我正在从一个servlet动作运行一些长时间运行的更新,并希望完成请求并在后台执行更新。 而不是像RabbitMQ那样添加一个消息中间件,我想我可以生成一个可以在后台运行的线程,并在自己的时间内完成。 我在其他SO线程中读取服务器终止服务器产生的线程,以便它能够很好地pipe理资源。 有没有推荐的方式来产生线程,使用Tomcat的后台作业。 我也使用Spring MVC的应用程序。
我不熟悉并行编程。 .NET中有两个类: Task和Thread 。 所以,问题是:这些类之间有什么区别? 什么时候使用Thread和Task时更好?
在Python文档中说: 一个线程可以被标记为“守护线程”。 这个标志的意义在于,只有守护进程线程被留下时,整个Python程序才会退出。 初始值是从创build线程inheritance的。 有没有人有一个更清楚的解释是什么意思或一个实际的例子,显示你想要设置线程为daemonic ? 为了澄清我: 所以唯一不会将线程设置为守护进程的方法是在主线程退出后让它们继续运行。
这是一个故意的devise决定还是我们目前的浏览器的问题,将在未来版本中纠正?
我还没有看到使用Pool.apply , Pool.apply_async和Pool.map的例子 。 我主要使用Pool.map ; 别人的优点是什么?
目前我有两个SwingWorker线程在后台工作。 如果发生exception,该方法停止工作,但线程仍然运行。 如果发生exception,我该如何停止执行并杀死doInBackground()的线程? this.cancel(true)不会销毁/closures线程。 我怎样才能做到这一点? @Override protected Boolean doInBackground() throws Exception { try { while (true) { //some code here return true; } } catch (Exception e) { this.cancel(true); //<– this not cancel the thread return false; } } 我在NetBeans的debugging中看到这些线程。 'AWT-EventQueue-0' em execução 'AWT-Windows' em execução 'SwingWorker-pool-1-thread-1' em execução 'SwingWorker-pool-1-thread-2' em execução //*em execução = […]
我相当新的Java,并开始进入使用不同的线程,以便对我的代码的一部分使用wait()或sleep() ,并让其他人仍然运行。 对于这个项目,我正在使用带有javax.swing.*和java.awt.* JFrame导入。 我想要做的是有一个线程(在我的代码中,它是主要的起始线程)允许玩家在井字棋板上select一个空间,当他们点击它时,它会改变图标,那么AI会等待1秒,然后再从我创build的第二个线程回放。 不幸的是,每当我调用ait.sleep(1000) ( ait是我的线程名)时,两个线程在完成执行之前等待1秒钟。 谁能告诉我为什么睡一个线程是停止我的整个执行?
为什么我们调用start()方法,然后调用run()方法? 我们不能直接打电话run() ? 请举例说明有什么区别。