Java創建線程的方式
阿新 • • 發佈:2017-09-13
獲取 顯式 好處 join 多線程 容易 調用 而且 直接 ①繼承Thread類(真正意義上的線程類),是Runnable接口的實現。
②實現Runnable接口,並重寫裏面的run方法。
③使用Executor框架創建線程池。Executor框架是juc裏提供的線程池的實現。
調用線程的start():啟動此線程;調用相應的run()方法
繼承於Thread類的線程類,可以直接調用start方法啟動線程(使用static也可以實現資源共享).一個線程(對象)只能夠執行一次start(),而且不能通過Thread實現類對象的run()去啟動一個線程。
實現Runnable接口的類需要再次用Thread類包裝後才能調用start方法。(三個Thread對象包裝一個類對象,就實現了資源共享)。
線程的使用的話,註意鎖和同步的使用。(多線程訪問共享資源容易出現線程安全問題)
一般情況下,常見的是第二種。
* Runnable接口有如下好處:
*①避免點繼承的局限,一個類可以繼承多個接口。
*②適合於資源的共享
/*
* Thread的常用方法:
* 1.start():啟動線程並執行相應的run()方法
* 2.run():子線程要執行的代碼放入run()方法中
* 3.currentThread():靜態的,調取當前的線程
* 4.getName():獲取此線程的名字
* 5.setName():設置此線程的名字
* 6.yield():調用此方法的線程釋放當前CPU的執行權(很可能自己再次搶到資源)
* 7.join():在A線程中調用B線程的join()方法,表示:當執行到此方法,A線程停止執行,直至B線程執行完畢,
* A線程再接著join()之後的代碼執行
* 8.isAlive():判斷當前線程是否還存活
* 9.sleep(long l):顯式的讓當前線程睡眠l毫秒 (只能捕獲異常,因為父類run方法沒有拋異常)
* 10.線程通信(方法在Object類中):wait() notify() notifyAll()
*
*設置線程的優先級(非絕對,只是相對幾率大些)
* getPriority():返回線程優先值
* setPriority(int newPriority):改變線程的優先級
*/
②實現Runnable接口,並重寫裏面的run方法。
③使用Executor框架創建線程池。Executor框架是juc裏提供的線程池的實現。
調用線程的start():啟動此線程;調用相應的run()方法
繼承於Thread類的線程類,可以直接調用start方法啟動線程(使用static也可以實現資源共享).一個線程(對象)只能夠執行一次start(),而且不能通過Thread實現類對象的run()去啟動一個線程。
實現Runnable接口的類需要再次用Thread類包裝後才能調用start方法。(三個Thread對象包裝一個類對象,就實現了資源共享)。
線程的使用的話,註意鎖和同步的使用。(多線程訪問共享資源容易出現線程安全問題)
一般情況下,常見的是第二種。
* Runnable接口有如下好處:
*①避免點繼承的局限,一個類可以繼承多個接口。
*②適合於資源的共享
/*
* Thread的常用方法:
* 1.start():啟動線程並執行相應的run()方法
* 2.run():子線程要執行的代碼放入run()方法中
* 3.currentThread():靜態的,調取當前的線程
* 4.getName():獲取此線程的名字
* 5.setName():設置此線程的名字
* 6.yield():調用此方法的線程釋放當前CPU的執行權(很可能自己再次搶到資源)
* 7.join():在A線程中調用B線程的join()方法,表示:當執行到此方法,A線程停止執行,直至B線程執行完畢,
* A線程再接著join()之後的代碼執行
* 8.isAlive():判斷當前線程是否還存活
* 9.sleep(long l):顯式的讓當前線程睡眠l毫秒 (只能捕獲異常,因為父類run方法沒有拋異常)
* 10.線程通信(方法在Object類中):wait() notify() notifyAll()
*
*設置線程的優先級(非絕對,只是相對幾率大些)
* getPriority():返回線程優先值
* setPriority(int newPriority):改變線程的優先級
*/
Java創建線程的方式