0
我有其中消費者/生產者程序:將被處理轉換爲ExecutorService的
- 項(字符串)進入一個的BlockingQueue
- 我實例化來自BlockingQueue的執行取()的螺紋固定數量的然後處理這些字符串。
的處理線程是這個類的實例:
class ProcessingThread extends Thread {
private void process(String s) {
(big method with calls to other big methods)
}
public void run() {
String s = queue.take();
process(s);
}
}
轉換爲一個Executor將是相當簡單:絃樂將直接進入執行程序,用一個Runnable一起:
class Task implements Runnable {
private void process(String s) {
(big method with calls to other big methods)
}
public void run() {
process(s);
}
}
然後:
executor.execute(new Task(s));
但是......每次我實例化一個任務時,它都會實例化一個非常大的代碼塊(處理器) - 我不能這樣做,內存需求會變得天高。
我該怎麼做?
「*它會實例化一大塊代碼*」=>你是什麼意思? – assylias
「實例化一大塊代碼」是什麼意思?所有實例共享相同的代碼。每次你實例化一個對象時,並不是每個方法的字節碼都被複制。 – aioobe
我的意思是ProcessingThread類很大,並且生成的Runnable對於實例化來說也很大且昂貴。 –