目前我正在使用LinkedList
添加所有Command
信息。如何使以下List<Command>
线程安全?我应该在这里使用其他选项LinkedList
吗?
private static List<Command> commands;
Command command = new Command();
command.setName(commandName);
command.setExecutionPercentage(Double.parseDouble(percentage));
command.setAttributeIDGet(attributeIDGet);
command.setAttributeIDSet(attributeIDSet);
command.setDataUsageCriteria(dataCriteria);
command.setUserLoggingCriteria(userLoggingCriteria);
command.setSleepTime(sleepTimeOfCommand);
我正在添加command
通过从文本文件中读取并将其放入LinkedList of command
如下所示的所有内容。所以假设如果我有,three command
那么我需要将所有这些添加three command
到LinkedList
我正在做的事情中。
commands.add(command);
如果我做下面的事情怎么办? -
Collections.synchronizedList(commands.add(command));
或者我需要做这样的事情-
commands = Collections.synchronizedList(new LinkedList<Command>());
更新:-
根据您的建议,如果我使用 -
private static Queue<Command> commands;
commands = new ConcurrentLinkedQueue<Command>(); // Using linked list to ensure iteration order
Command command = new Command();
command.setName(commandName);
command.setExecutionPercentage(Double.parseDouble(percentage));
command.setAttributeIDGet(attributeIDGet);
command.setAttributeIDSet(attributeIDSet);
command.setDataUsageCriteria(dataCriteria);
command.setUserLoggingCriteria(userLoggingCriteria);
command.setSleepTime(sleepTimeOfCommand);
commands.add(command);
在基本上完成所有初始化之后,我需要command information
从队列中获取 ,所以我以前使用LinkedList
. 但是在更改为之后ConcurrentLinkedQueue
,这get call is giving me an error
就像有一个error line on get call
commands.get(commandWithMaxNegativeOffset);
我得到的错误 -
The method get(int) is undefined for the type Queue<Command>