我有一个程序,如下所示。我想要三个并发线程使用线程同步将不同的字符串添加到infiList
(“This”,“is”,“infinite”)。例如:多线程|| Java
我想附加某些线程,例如;
如果
infiList
的最后一个字是当前“这个”,该线程应该追加词“是”infiList
。如果
infiList
中的最后一个字词当前为“is”,则线索应在“infiList
”上附加单词“infinite”。如果
infiList
中的最后一个词当前是“无限”,或者infiList
仍然为空,则该线程应该在infiList
附加单词“This”。infiList
在任何时候只应在列表的开头或直接在“无限”出现之后包含“This”,在列表中直接出现“This”之后应该在列表中出现“is” “无限”应该 只发生在“是”之后。
任何有关如何做到这一点的帮助表示赞赏。
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();
}
}
当我尝试运行此,我得到多个错误'“异常线程‘线程0’显示java.lang.NullPointerException \t在Multithreading.run(多线程.java:17) \t at java.lang.Thread.run(Unknown Source)“' –
但是你的循环将永远运行...或者可能是无限的:) –
你的代码永远不会执行你有while while(true) –