關於線程的介紹有如下內容: 01. 傳統線程技術回顧
02. 傳統定時器技術回顧
03. 傳統線程互斥技術
04. 傳統線程同步通訊技術
05. 線程範圍內共用變數的概念與作用
06. ThreadLocal類及應用技巧
07. 多個線程之間共用資料的方式探討
08. java5原子性操作類的應用
09. java5線程並發庫的應用
10. Callable與Future的應用
11. java5的線程鎖技術
12. java5讀寫鎖技術的妙用
13. java5條件阻塞Condition的應用
14. java5的Semaphere同步工具
15. java5的CyclicBarrier同步工具
16. java5的CountDownLatch同步工具
17. java5的Exchanger同步工具
18. java5阻塞隊列的應用
19. java5同步集合類的應用 Java線程是一項非常基本和重要的技術,在偏底層和偏技術的Java程式中不可避免地要使用到Java線程技術,特別是android手機程式和遊戲開發中,多線程成了必不可少的一項重要技術。但是,很多Java程式員對Java線程技術的瞭解都僅停留在初級階段,在項目中一旦涉及到多線程時往往就表現得糟糕至極,所以,軟體公司常常使用Java線程技術來考察面試者的基本功和判斷其編碼水平的高低。一 現在我們來回顧一下,傳統的線程建立方式:1:這種方式使用繼承Thread類的方式,也就是使用Thread子類的形式:
Thread t1 = new Thread() {@Overridepublic void run() {while (true) {System.out.println(Thread.currentThread().getName());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};t1.start();
2 :使用實現Runnable介面的方式建立線程:
Thread t2 = new Thread(new Runnable() {public void run() {while (true) {System.out.println(Thread.currentThread().getName());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}) {};t2.start();
接觸過線程的都知道這兩種建立線程的方式, 接下來我們看一下另一種方式運行結果是怎麼樣的:
new Thread(new Runnable() {public void run() {while (true) {System.out.println("runnable:"+Thread.currentThread().getName());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}) {@Overridepublic void run() {while (true) {System.out.println("thread:"+Thread.currentThread().getName());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();
這種方式是上面兩種方式的結合體,寫成簡單的方式就是:
new Thread(new Runnable(){}){run()}那麼它到底會運行Runnable子類的run方法還是Thread子類的run()方法呢?我們看一下Thread的原始碼:
public void run() {if (target != null) { target.run();} }
也就是說,如果我們沒有覆蓋Thread的run()時,實現了Runnable介面,那麼就執行Runnable介面的run()方法,然而在上面的例子,我們已經覆蓋 了Thread類的run()方法,
根據多態,所以執行的是Thread子類的run()方法.