導航:首頁 > 編程語言 > 多線程復制文件Java

多線程復制文件Java

發布時間:2025-04-08 12:41:14

java 面試 什麼是多線程

多線程是指一個應用程序同時執行多個任務,一般來說一個任務就是一個線程 ,而一個應用程序有一個以上的線程我們稱之為多線程。

補充內容

線程與進程的區別:

舉例說明:

publicclassThreadTest{

publicstaticvoidm1(){

System.out.println("m1");
}

publicstaticvoidm2(){

System.out.println("m2");
}

publicstaticvoidm3(){

m1();
m2();
}

publicstaticvoidmain(String[]args){

m3();
}}

程序中的路徑或者線程也就是main方法(共一條):


⑵ 什麼是多線程編程

多線程編程技術是Java語言的重要特點。多線程編程的含義是將程序任務分成幾個並行的子任務。特別是在網路編程中,你會發現很多功能是可以並發執行的。 比如網路傳輸速度較慢、用戶輸入速度較慢,你可以用兩個獨立的線程去完成這兩個功能,而不影響正常的顯示或其它功能。 多線程是與單線程比較而言的,普通的Windows採用單線程程序結構,其工作原理是:主程序有一個消息循環,不斷從消息隊列中讀入消息來決定下一步所要乾的事情,一般是針對一個函數,只有等這個函數執行完之後,主程序才能接收另外的消息來執行。比如子函數功能是在讀一個網路數據,或讀一個文件,只有等讀完這個數據或文件才能接收下一個消息。在執行這個子函數過程中你什麼也不能幹。但往往讀網路數據和等待用戶輸入有很多時間處於等待狀態,多線程利用這個特點將任務分成多個並發任務後,就可以解決這個問題。Java中的線程類 1.擴展java.lang.Thread類,用它覆蓋Thread類的run方法。 2.生成實現java.lang.Runnable介面的類並將其它的實例與java.lang.Thread實例相關聯。 Thread類是負責向其它類提供線程支持的最主要的類,要使用一個類具有線程功能,在Java中只要簡單地從Thread類派生一個子類就可以了擴展Thread類,如printThread.java。 Thread類最重要的方法是run方法。run方法是新線程執行的方法,因此生成java.lang.Thread的子類時,必須有相應的run方法。 //PrintThread.java public class PrintThread extends Thread//繼承Tread類 private int count=0 //定義一個count變數用於統計列印的次數並共享變數 public static void mainString args//main方法開始 PrintThread p=new PrintThread//創建一個線程實例 p.start//執行線程 for{;;}//主線程main方法執行一個循環,for執行一個死循環count++ System.out.printcount+″:Main\n″//主線程中列印count +「main」變數的值,並換行 public void run//線程類必須有的run()方法for{;;}count++ System.out.printcount+″:Thread\n″ 上面這段程序便是繼承java.lang.Tread並覆蓋run的方法。用Java 虛擬機啟動程序時,這個程序會先生成一個線程並調用程序主類的main方法。這個程序中的main方法生成新線程,連接列印「Thread」。在啟動線程之後,主線程繼續列印「Main」。 編譯並執行這個程序,然後立即按「Ctrl+C」鍵中斷程序,你會看到上面所述的兩個線程不斷列印出:XXX:main…..XXX:Thread…. XXX代表的是數字,也就是上面count的值。在筆者的機器上,不同時刻這兩個線程列印的次數不一樣,先列印20個main(也就是先執行20次主線程)再列印出50次Thread,然後再列印main…… 提示:為了便於查看該程序的執行結果,你可以將執行結果導入一個文本文件,然後打開這個文件查看各線程執行的情況。如運行: javac PrintThread.java Java PrintThread1.txt 第一個命令javac PrintThread.java是編譯java程序,第二個是執行該程序並將結果導入1.txt文件。當然你可以直接執行命令:java

⑶ Java的多線程有什麼用處

java的多線程一般用於網路層
簡單的理解,你訪問網站的時候肯定有過一次開很多個網頁,然後再去一個個看,這個就是多線程的類似原理。
單線程可以理解為你每次只開一個網頁,要看其他網頁的時候先關了原來的網頁後才去訪問一個新網頁。
單線程的缺點是順序執行,只有一個結束了,下一個才會執行,如果網路阻塞等原因,程序會一直等待返回信息而什麼都不去做了,這樣就造成了效率的降低。
多線程會分段分步執行,如果一個線程卡死在網路上面(也就是打不開網頁的情況),他不會一直等待,會先執行其他的訪問,然後再回來看一下卡死的線程是否能繼續,如果設置了超時會報錯然後釋放那個線程。

⑷ java多線程的好處

1. 充分利用CPU資源
現在世界上大多數計算機只有一塊CPU.因此,充分利用CPU資源顯得尤為重要。當執行單線程程序時,由於在程序發生阻塞時CPU可能會處於空閑狀態。這將造成大量的計算資源的浪費。而在程序中使用多線程可以在某一個線程處於休眠或阻塞時,而CPU又恰好處於空閑狀態時來運行其他的線程。這樣CPU就很難有空閑的時候。因此,CPU資源就得到了充分地利用。
2. 簡化編程模型
如果程序只完成一項任務,那隻要寫一個單線程的程序,並且按著執行這個任務的步驟編寫代碼即可。但要完成多項任務,如果還使用單線程的話,那就得在在程序中判斷每項任務是否應該執行以及什麼時候執行。如顯示一個時鍾的時、分、秒三個指針。使用單線程就得在循環中逐一判斷這三個指針的轉動時間和角度。如果使用三個線程分另來處理這三個指針的顯示,那麼對於每個線程來說就是指行一個單獨的任務。這樣有助於開發人員對程序的理解和維護。
3. 簡化非同步事件的處理
當一個伺服器應用程序在接收不同的客戶端連接時最簡單地處理方法就是為每一個客戶端連接建立一個線程。然後監聽線程仍然負責監聽來自客戶端的請求。如果這種應用程序採用單線程來處理,當監聽線程接收到一個客戶端請求後,開始讀取客戶端發來的數據,在讀完數據後,read方法處於阻塞狀態,也就是說,這個線程將無法再監聽客戶端請求了。而要想在單線程中處理多個客戶端請求,就必須使用非阻塞的Socket連接和非同步I/O.但使用非同步I/O方式比使用同步I/O更難以控制,也更容易出錯。因此,使用多線程和同步I/O可以更容易地處理類似於多請求的非同步事件。
4. 使GUI更有效率
使用單線程來處理GUI事件時,必須使用循環來對隨時可能發生的GUI事件進行掃描,在循環內部除了掃描GUI事件外,還得來執行其他的程序代碼。如果這些代碼太長,那麼GUI事件就會被「凍結」,直到這些代碼被執行完為止。
在現代的GUI框架(如SWING、AWT和SWT)中都使用了一個單獨的事件分派線程(event dispatch thread,EDT)來對GUI事件進行掃描。當我們按下一個按鈕時,按鈕的單擊事件函數會在這個事件分派線程中被調用。由於EDT的任務只是對GUI事件進行掃描,因此,這種方式對事件的反映是非常快的。
5. 節約成本
提高程序的執行效率一般有三種方法:
(1)增加計算機的CPU個數。
(2)為一個程序啟動多個進程
(3)在程序中使用多進程。
第一種方法是最容易做到的,但同時也是最昂貴的。這種方法不需要修改程序,從理論上說,任何程序都可以使用這種方法來提高執行效率。第二種方法雖然不用購買新的硬體,但這種方式不容易共享數據,如果這個程序要完成的任務需要必須要共享數據的話,這種方式就不太方便,而且啟動多個線程會消耗大量的系統資源。第三種方法恰好彌補了第一種方法的缺點,而又繼承了它們的優點。也就是說,既不需要購買CPU,也不會因為啟太多的線程而佔用大量的系統資源(在默認情況下,一個線程所佔的內存空間要遠比一個進程所佔的內存空間小得多),並且多線程可以模擬多塊CPU的運行方式,因此,使用多線程是提高程序執行效率的最廉價的方式。

閱讀全文

與多線程復制文件Java相關的資料

熱點內容
程序員放棄後會怎樣 瀏覽:158
河北模具編程 瀏覽:177
adb查找命令 瀏覽:308
安卓手機視頻文件夾怎麼打開 瀏覽:302
平板加密手機後怎麼關閉 瀏覽:555
流媒體伺服器應該注意什麼 瀏覽:526
d8命令編譯 瀏覽:942
壓縮包解壓需要多少空間 瀏覽:138
如何查找app屬性 瀏覽:380
android人臉識別技術 瀏覽:304
pc104編程 瀏覽:328
二維碼反編譯破解推廣 瀏覽:673
修改伺服器的mac地址 瀏覽:519
好玩的編程軟體 瀏覽:891
編程語言創始人有錢嗎 瀏覽:796
短視頻app怎麼獲客 瀏覽:7
查看雲伺服器的應用 瀏覽:426
javadump工具 瀏覽:557
程序員16g 瀏覽:420
程序員沒有辦法成為top怎麼辦 瀏覽:195