我有一個100個字符串的列表。對於每個字符串,我需要執行3個任務。 所以我介紹的併發線程Java併發性線程錯誤
Class A implements Runnable
{
String str;
A(String s)
{
str = s;
}
public static void main(String[] args)
{
Runnable runnable = null;
//For Each of my strings
for(String s:MyList)
{
runnable = new A(s);
new Thread(runnable).start();
}
}
@Override
public void run() {
task1();
task2();
task3();
}
}
這跑進一個例外。螺紋
異常「主要」 java.lang.OutOfMemoryError:GC開銷超過限制 異常在線程「線程0」 java.lang.OutOfMemoryError:Java堆空間
如何克服這一點,並限制線程大小?
我試過使用這個。
ExecutorService pool = Executors.newFixedThreadPool(10);
pool.execute(runnable);
它不起作用。
您是否爲每次迭代創建一個新的線程池? – Smutje
你應該回去嘗試讓你的'ExecutorService'版本工作。因爲這是運行100個異步任務的更合理的方式。 – Kenster