Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于管理函数调用的队列_Java_Asynchronous_Queue - Fatal编程技术网

Java 用于管理函数调用的队列

Java 用于管理函数调用的队列,java,asynchronous,queue,Java,Asynchronous,Queue,嘿,伙计们,我陷入了一个关键的问题。我创建了一个应用程序的仪表板。我在仪表板上显示的数据是根据我的业务逻辑创建的。有各种各样的异步触发器刷新此数据。根据不同的参数调用这些触发器。。e、 g.定时器触发器,删除实体,添加实体。所有这些触发器都具有更新仪表板数据的不同功能(请记住,这些数据存储在数据库中,即我直接从数据库读取仪表板上的数据)计算仪表板数据需要一些时间。 现在我的问题是,无论何时同时调用两个不同的触发器,它们都会在数据中创建一致性。e、 g.一个触发器更改数据,另一个触发器也重置数据。

嘿,伙计们,我陷入了一个关键的问题。我创建了一个应用程序的仪表板。我在仪表板上显示的数据是根据我的业务逻辑创建的。有各种各样的异步触发器刷新此数据。根据不同的参数调用这些触发器。。e、 g.定时器触发器,删除实体,添加实体。所有这些触发器都具有更新仪表板数据的不同功能(请记住,这些数据存储在数据库中,即我直接从数据库读取仪表板上的数据)计算仪表板数据需要一些时间。 现在我的问题是,无论何时同时调用两个不同的触发器,它们都会在数据中创建一致性。e、 g.一个触发器更改数据,另一个触发器也重置数据。。所以最后我不会得到想要的结果。现在我想确保一次只有一个触发器在更新数据,而另一个触发器在等待第一个触发器完成


简单地说,我希望将函数调用保持在队列中,如果已经有某个方法正在执行,则等待其完成并调用队列中的下一个方法

听起来像是要用单个线程配置一个。只需提交每个Runnable,执行者就会将这些文件排队等待执行。有关更多信息,请参阅。

作为一个快速修复方法,您可以将每个触发器包装在
SwingUtilities.invokeLater(Runnable)
调用中,该调用将把任务放入队列并以串行方式执行它


使用UI队列是有意义的,因为您的仪表板是一个UI组件。

将仪表板数据更新逻辑放在一个代码块中,并锁定该块。当各种触发器发生时,它们将以同步方式自动等待锁

ExecutorService executorService2 = Executors.newFixedThreadPool(1);
它将作业排成队列并逐个处理