我有一個程序,如下所示。我想要三個併發線程使用線程同步將不同的字符串添加到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) –