執行緒池的思想就相當於物件池一樣,它也是開闢了一塊記憶體空間,裡面存放那些(未死亡的)執行緒,該池中的執行緒執行排程由池管理器來處理,當從池中取出乙個、執行完之後又回歸池中。這樣的好處就可以避免反覆的建立執行緒物件所帶來的效能開銷,從而節省了系統的資源。
專案中用到兩處執行緒池的內容,
1,executors.newsinglethreadexecutor() 單任務執行緒,結合專案中的意思就是乙個」路線「例項物件建立後就執行這個執行緒,達到不斷(下面是1000)往車集合(vechicles)裡新增車輛。
executorservice pool = executors.newsinglethreadexecutor();
pool.execute(new runnable() catch (interruptedexception e)
vechicles.add(road.this.name + "_" + i); //內部類訪問外部類的變數,需要用類.this.變數
}
}});
2,executors.newscheduledthreadpool(1); 延遲連線池,可以說是乙個定時器,就是規定它隔個多少時間就執行一次,該引數(1)是表示池中所儲存的執行緒數為1,方法引數解釋timer.scheduleatfixedrate(執行緒、開始時間、定時間隔時間、時間型別),結合專案中的意思就是如果車集合不為空,則每過一秒鐘就把該集合的第乙個元素刪除,也就是說逐步把該路線上的車一輛一輛減少。
scheduledexecutorservice timer = executors.newscheduledthreadpool(1);
timer.scheduleatfixedrate(
new runnable()
} }
},
1,
1,
timeunit.seconds);
專案總結:其實該專案就是3塊,一、是路線的類:首先隨機不斷的往路線車輛集合裡新增車輛,然後每隔一秒判斷是否為綠燈,是則把這個集合的第乙個元素刪除,不為綠燈就不變。二、燈的類,是乙個列舉類,固定12個常量,也就是12個列舉類的例項物件,它們的有3個引數,(當前燈是否為綠、與當前燈同時為綠的對應方向、當前燈變紅時下乙個變綠的燈)。三、就是交通燈的管理,就是讓乙個方向的燈由綠變紅,那它下乙個方向的燈就變紅,這樣迴圈著。
執行緒!執行緒!!執行緒!!! Delphi版
以下內容僅供初學者參考 看到有的同學對delphi的執行緒認識不夠深,特開一貼給同學們講講。主要給出兩種常用的執行緒形式。1 長等待型執行緒示例,等待命令,執行不定長的工作,但每個工作的時間不會太長。2 長工作型執行緒示例,執行乙個很長時間的工作,但可以很快響應取消操作。以下程式所用的知識為 訊息機...
執行緒 執行緒控制代碼 執行緒ID
什麼是控制代碼 控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以...
執行緒 執行緒控制代碼 執行緒ID
什麼是控制代碼 控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以...