package user.jobengine.zk.model;\r
\r
+import java.util.ArrayList;\r
import java.util.Arrays;\r
import java.util.List;\r
-import java.util.concurrent.BlockingQueue;\r
-import java.util.concurrent.LinkedBlockingQueue;\r
\r
import org.zkoss.bind.BindUtils;\r
import org.zkoss.bind.annotation.Command;\r
\r
public class AsyncBaseModel extends BaseModel {\r
\r
- private BlockingQueue<UITask> uiTasks = new LinkedBlockingQueue<>();\r
+ private List<UITask> uiTasks = new ArrayList<>();\r
\r
protected void NotifyChange(String... names) {\r
List<String> nameList = Arrays.asList(names);\r
}\r
\r
protected void registerTask(UITask task) {\r
- try {\r
- uiTasks.put(task);\r
- } catch (InterruptedException e) {\r
+ synchronized (uiTasks) {\r
+ uiTasks.add(task);\r
}\r
}\r
\r
@Command\r
public void uiTick() {\r
- UITask task = uiTasks.poll();\r
- if (task == null)\r
- return;\r
- task.execute();\r
+ synchronized (uiTasks) {\r
+ for (UITask task : uiTasks) {\r
+ task.execute();\r
+ }\r
+ uiTasks.clear();\r
+ }\r
}\r
\r
}\r