java线程的创建与执行_Java多线程的创建和运行
1.多線程的好處
多線程是一個很有用的東西,它使的系統可以同時運行多個任務,提高程序的執行效率。大家平時可能沒有注意到,其實我們電腦能同時執行多個程序的基本原理就是多線程。
每一個程序都是一個進程,而線程則是進程下獨立的執行單元。
如果把一臺電腦當成一個工業園區,那么這個電腦能容納的工廠越多,說明這個電腦越好,而進程就是對于電腦而言,就猶如工廠對于工業園區而言。而工廠中的每一條流水線就是工廠的進程,他們都是獨立的,但是在關系的可以互相依賴,或者互相排斥等等,但是最重要的一點,他們是可以獨立運行的。因此工廠都是多線程模式,我要生產一臺電腦,不會先造外殼,然后造硬盤,內存等等一個個造完再去組裝吧。
我們是分成多條流水線,造外殼的專門造外殼,造硬盤的造硬盤,造內存的造內存,最后去組裝流水線組裝。用第一種方法,就是一條龍做下來所消耗的時間和多條流水線同時運行。假設一下我們生產電腦每個步驟所需人力和時間為1和n秒。現在有m個步驟才能完成一臺電腦。那么一條龍式所需的人力為m,所需時間為nm。如果是多線程,現在有m條流水線,所需人力為m,所需時間為n。這不難看出,只要電腦性能足夠(所謂人力),多線程所消耗時間將比一條龍式做法少很多很多。再硬件性能已經不再是最大限制的時候,多線程將是最適合的現代發展。
還有一點,多線程對處理高并發是最合適的。如果我們的面對服務器都是一對一服務,那么對硬件而言是一種浪費,如果過多的同時接入用戶,又會對系統而言不能做到很好的執行,因為他是一條龍式的,但是如果我們現在不是一條龍,而是流水線。就像銀行柜臺,只有一個窗口,那么這個窗口要處理轉賬,取錢,存款等事情的時候就會變慢。但是如果三個窗口分別處理就會變快,這就是所謂的多線程的優勢。
2.Java多線程的創建
Java多線程創建目前而言有三種方式:新建繼承Thread類,新建實現Runnable類,匿名類三種。但其實都是基于Runnable接口完成,因為Thread也是實現了Runnable接口。所以可以說如果掌握了Runnable接口,那么基本就掌握了多線程的創建。
1.創建線程方式1:繼承Thread類
創建一個類繼承thread,重寫run方法:將線程任務相關的代碼寫在該方法中。
創建子類對象,調用start方法開啟線程。
2.創建線程方式2:實現runnable接口
創建一個類實現Runnable接口,重寫run方法:將線程任務相關的代碼寫在該方法中
創建Runnable接口實現類對象,根據實現類對象創建Thread對象
調用線程對象的start方法開啟線程:在新的路徑中執行實現類對象的run方法
3.創建線程的方式3:匿名內部類
匿名內部類的語法
new類名或者接口名(){
//有方法重寫就重寫
}
這個辦法是最常用的,雖然只有一次性,但是我們會經常使用。因為有的時候線程我們開啟一次就夠了,如果需要多個線程的話,一般會直接使用線程池不需要我們直接手動開啟了。但是如果說我們只是短時間內使用,直接使用匿名表達式就可以了。(補充一下:不一定會使用匿名表達式,因為以一種接口叫函數式接口,就是接口里面只有且只能有一個抽象方法。這種情況下我們可以使用lambda表達式,用起來跟加簡單。當然還有方法引用這種方法但是其實都是差不多的。)
4.總結
重點其實在于run方法,所有的線程開啟終歸依賴于run方法。就像我們運行java代碼的時候,入口只能是main方法一樣,運行多線程唯一入口也只能是run方法。
所以所有要執行的代碼都要寫在run方法中。
但是!!!
啟動線程的方法是start方法
記住這兩個最重要的方法,一個寫代碼,一個啟動線程。上面三種創建線程的方法都依靠這兩種方法執行線程。
總結
以上是生活随笔為你收集整理的java线程的创建与执行_Java多线程的创建和运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode1046】最后一块石头
- 下一篇: java美元兑换,(Java实现) 美元