1、什么是線程?
2、線程和進程有什么區別?
3、如何在Java中實現線程?
4、Java關鍵字volatile與synchronized作用與區別?
volatile修飾的變量不保留拷貝,直接訪問主內存
synchronized用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執行該段代碼
5、有哪些不同的線程生命周期?
6、你對線程優先級的理解是什么?
7、什么是死鎖(Deadlock)?如何分析和避免死鎖?
8、什么是線程安全?Vector是一個線程安全類嗎?
9、Java中如何停止一個線程?
10、什么是ThreadLocal?
11、Sleep()、suspend()和wait()之間有什么區別?
注意:sleep()是一個靜態方法。這意味着只對當前線程有效,一個常見的錯誤是調用t.sleep(),(這里的t是一個不同於當前線程的線程)。即便是執行t.sleep(),也是當前線程進入睡眠,而不是t線程。t.suspend()是過時的方法,使用suspend()導致線程進入停滯狀態,該線程會一直持有對象的監視器,suspend()容易引起死鎖問題。
12、什么是線程餓死,什么是活鎖?
13、什么是Java Timer類?(如何創建一個有特定時間間隔的任務?)
14、Java中的同步集合與並發集合有什么區別?
15、同步方法和同步塊,哪個是更好的選擇?