【发布时间】:2016-02-16 08:16:01
【问题描述】:
我有一个程序如下。我希望三个并发线程使用线程同步将不同的字符串添加到infiList ("This", "is", "infinite")。
例如,我还想附加某些线程;
如果
infiList中的最后一个单词当前是“This”,则线程应将单词“is”附加到infiList。如果
infiList中的最后一个单词当前是“is”,则线程应将单词“infinite”附加到infiList。如果
infiList中的最后一个单词当前是“infinite”,或者如果infiList仍然为空,则线程应将单词“This”附加到infiList。在任何时候,
infiList应仅在列表开头或紧接在出现“infinite”之后包含“This”,“is”应仅出现在列表中紧接在“This”之后,并且一个“无限”应该 仅在“是”之后直接出现。
感谢任何有关如何执行此操作的帮助。
import java.util.ArrayList;
public class Multithreading implements Runnable {
public static ArrayList<String> infiList = new ArrayList<>();
@Override
public void run() {
for (int i=0; i<100; i++) {
String s = null;
synchronized (infiList) {
if(infiList.isEmpty())
infiList.add("This");
else
{
s = infiList.get(infiList.size()-1);
if(s.equals("This"))
infiList.add("is");
else if(s.equals("is"))
infiList.add("infinite");
else if(s.equals("infinite"))
infiList.add("This");
}
}
}
}
public static void main (String args[]) {
// Create three concurrent threads
new Thread(new Multithreading()).start();
new Thread(new Multithreading()).start();
new Thread(new Multithreading()).start();
}
}
【问题讨论】:
标签: java string multithreading loops arraylist