我正在制作一个数据库日志引擎,当发生某些更改时会将这些更改推送到队列中,并在处理程序中的线程中每50毫秒处理25个LogObject。
我考虑使用Collections.synchronizedList()来存储我仍需要在线程中处理的对象。主应用程序线程通过ThreadObjInstance.LogList.add(new LogObject("Something to log"))将LogObjects推送到列表中,在线程中我通过LogList.shift()来处理它。
然而,我觉得可能有更好的方法来做这件事,或者这是一种完全可以接受的方法?还是说我应该为此情况使用ArrayBlockingQueue?或者其他同步List对象...有很多选择。
这是我第一次使用线程,所以我正在尝试弄清楚建立作业队列的最佳方法以及维护它所需使用的对象。我能直接将事物添加到线程列表中吗?还是我需要在线程中使用同步方法?
问题基本上是: 1. 在两个线程之间存储同步的对象列表(在处理线程中还是在主线程中)? 2. 添加/删除项目到列表的最佳实践是什么?通过同步函数还是直接在List对象上进行操作? 3. 构建作业队列时我的List对象选择有哪些?
我考虑使用Collections.synchronizedList()来存储我仍需要在线程中处理的对象。主应用程序线程通过ThreadObjInstance.LogList.add(new LogObject("Something to log"))将LogObjects推送到列表中,在线程中我通过LogList.shift()来处理它。
然而,我觉得可能有更好的方法来做这件事,或者这是一种完全可以接受的方法?还是说我应该为此情况使用ArrayBlockingQueue?或者其他同步List对象...有很多选择。
这是我第一次使用线程,所以我正在尝试弄清楚建立作业队列的最佳方法以及维护它所需使用的对象。我能直接将事物添加到线程列表中吗?还是我需要在线程中使用同步方法?
问题基本上是: 1. 在两个线程之间存储同步的对象列表(在处理线程中还是在主线程中)? 2. 添加/删除项目到列表的最佳实践是什么?通过同步函数还是直接在List对象上进行操作? 3. 构建作业队列时我的List对象选择有哪些?