1.回答下你的問題,繼承Thread類并調用start方法就可以實現多線程了。
其實Java中實現多線程的方式有三種方式繼承Thread類,實現Runnable接口、實現Callable接口。
前兩種沒有返回值,后一種帶返回值。說到多線程就把線程相關的都說下。
2、什么是線程
進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,而多個線程共享進程申請的內存。
一個進程中可以啟動多個線程。比如java運行一個程序就會啟動一個進程,進程至少會啟動main線程和垃圾回收線程。
線程總是屬于某個進程,與進程內的其他線程一起共享分配給該進程的所有資源,但是線程有自己獨立的棧。
Java的線程又分為普通線程和守護線程,像垃圾回收線程就是守護線程。
3、線程的狀態
new:線程對象已經創建,還沒有調用start方法;
runnablestart0方法調用時,線程進入該狀態。wait/block/sleep/running也會轉到該狀態;
runningrunnable的線程執行就會進入該狀態
休眠狀態:包括wait/blocksleep,線程因為某個條件不再執行了,但是等待某個件事件出現,可能返回到runnable狀態
dead:異常或者run方法執行完成達到的狀態
4、線程同步
既然是多線程,就要注意線程安全問題。
解決線程安全問題,就需要加鎖。Java提供了synchronized和lock來實現線程同步的問題(Lock的實現這里就不說了,后面可以分享下)。
5、線程通信
Object的wait/notify方法,Condition的await和signal方法,BlockingQueue的實現類,
concurrent包下面的Semaphore、CyclicBarrierCountDownLatch都可以實現線程通信,這里就不詳解了
6、線程池
線程池可以參考我分享的關于ThreadPoolExecutor的文章
7、其他
ThreadLocalvolatile這兩個東西也是線程使用經常需要的,大家可以了解下
基本上線程使用的就這些,希望對你有幫助。
可以關注我,后續會把涉及到的知識點通過源碼的方式分析下。