當前位置:首頁 » 編程語言 » java線程任務

java線程任務

發布時間: 2022-04-02 09:39:24

1. java線程是什麼

線程是輕量級進程,只是進程有自己的資源,線程沒有。線程屬於一個進程與該進程中其它線程共享進程中的資源。
不在前端與用用戶進行交互的線程

2. java如何在多線程執行完後才執行其他任務

java.util.concurrent.CountDownLatch 這個類可以實現你所要的功能

例如:CountDownLatch latch = new CountDownLatch(5) //聲明計數器為5個
Thread t = new Thread() {
public void run() {
try {
//TODO 你的應用
} catch (Exception e) {
//TODO 異常處理
}
finally {
latch.countDown(); //這句是關鍵
System.out.println("ok"); //5個線程都跑完後輸出
}
}
};
t.start();
然後讓以上操作循環五次(就是說同時開5個線程),那麼這個"ok"就會在等到這5個線程都ok後才會被輸出一次。

3. java啟動多個線程執行同一個任務,效率會提高嗎

不清楚你用的什麼資料庫,以mysql做假設,首先確定你的表數據條數,假設row=100W,然後你打算開多少條線程,比如threadCount=20;那麼平均分配下來每條線程該處理的條數為avg=100W/20=5W,到這里你就得理解每條線程處理的是表中的那一批數據,比如你的查詢是按id欄位排序的,那麼線程1就是處理1-50000條,線程2就是處理50001-100000,依次類推下去,從這看你可以得到線程n(從1開始計算,表示第幾條線程)的一個變數值,offset=(n-1)*50000+1,到此,需要知道的數據都有了:表數據條數 row,線程條數threadCount,每條線程處理的條數avg,每條線程從第幾條數據開始處理offset,那麼你就可以在每條線程中使用select * from table limit offset,1000這樣的語句去一次性查詢一批數據來在代碼里循環處理,我定的是一次性查1000條,所以在線程沒處理完5W條之前,offset每次查詢完1000後,offset得加上1000,然後繼續select,直到處理完5W條數據

4. java多線程任務一般開多少個線程

一個線程是只能執行一個任務,多個任務需要多線程處理。
多線程將多任務的思想拓展到應用,因此,您可以將單個應用中的特定步驟進一步分解成一個個線程,每個線程可以並行運行。操作系統不僅在不同的應用任務間分配處理時間,而且在一項應用的每個線程間分配處理時間。

工程與科學方面的應用程序通常運行於專用的系統(可能沒有多任務化)。而一個多線程NI LabVIEW程序可以被分解成四個線程:用戶界面、數據採集、網路通信以及數據錄入。您可以分別賦予這四個線程的優先順序,以便它們獨立工作。於是,在多線程應用中,多項任務可以與該系統執行的其他應用並行執行。
利用多線程的應用具有以下幾大優勢:
1更有效的CPU利用率
2更好的系統可靠性
3改善多處理器計算機的性能

在許多應用中,您同步地調用資源,如儀器,這些儀器調用時常需要較長的時間完成。在一個單線程應用中,一個同步調用可能會阻止或防止該應用中的其他任務執行,直至該操作完成。而多線程避免了這樣的情況出現。
當同步調用在一個線程中運行時,程序中不依賴於該調用的其它部分可以在其它線程中運行。該程序的執行可以持續地推進,而不是停滯直到完成同步調用。這樣,一個多線程應用實現了CPU使用效率的最大化,因為當該應用的所有線程都可以同時運行時,CPU不會處於空閑狀態。

5. 如何使用Java線程執行定時任務及線程調動和同步

class Mytask1 extends Timertask { ①

public void run() {

System.out.println(」5 秒之後執行的定時器「);

}

}

Class Mytask2 extends Timertask {

public void run(){

System .out,println(」每秒執行的定時器」);

}

}

class Mytask3 extends Timertask {

public void run () {

System.out.println(」從某日起每分鍾執行的定時器!」) ;

}

}

public class TimerDemo {

plublic static void main(String[] args) {

Timer timer = new Timer( ) ; ②

timer.schele(new Mytask1( ) ,5000); ③

timer,schele(new Mytask1( ) ,1000,1000) ; ④

timer,schele(new Mytask1( ) ,new Dateo ( ) , 1000 * 60) ; ⑤

}

}

6. java多線程的任務執行問題。

先調用
shutdown
在調用
isTerminated
例:
/*
* 採用線程池開啟多個子線程,主線程等待所有的子線程執行完畢
*/
public static void moreThread() {
try {
int threadNum = 0;
for (int i = 0; i < 10; i++) {
threadNum++;

final int currentThreadNum = threadNum;
exe.execute(new Runnable() {

@Override
public void run() {
try {
System.out.println("子線程[" + currentThreadNum + "]開啟");
Thread.sleep(1000*10);
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("子線程[" + currentThreadNum + "]結束");
}
}
});
}

System.out.println("已經開啟所有的子線程");
exe.shutdown();
System.out.println("shutdown():啟動一次順序關閉,執行以前提交的任務,但不接受新任務。");
while(true){
if(exe.isTerminated()){
System.out.println("所有的子線程都結束了!");
break;
}
Thread.sleep(1000);
}

} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("主線程結束");
}
}

7. 求教高手:java中如何暫停一個線程中的任務,在以後的可以恢復之前任務的執行。

可以用以下幾種方法:
interrupt():中斷線程

stop():強迫線程停止執行。用 Thread.stop 來終止線程將釋放它已經鎖定的所有監視器(作為沿堆棧向上傳播的未檢查 ThreadDeath 異常的一個自然後果)。如果以前受這些監視器保護的任何對象都處於一種不一致的狀態,則損壞的對象將對其他線程可見,這有可能導致任意的行為。

yield()只是使當前線程重新回到可執行狀態,所以執行yield()的線程有可能在進入到可執行狀態後馬上又被執行。yield()只能使同優先順序的線程有執行的機會。----這句是重點

3.書上說yelid()是禮讓,是讓當前執行線程停下來給別的線程資源, 又說沒有任何機制保證會這樣。----------沒有任何機制保證執行yield()的線程一定會把資源讓給其它線程。打個比方:兩個人搶東西,A搶到了B沒有,再把東西放回去重搶,說不定還是A搶到B沒有。沒有任何機制保證放回去後B一定能搶到

sleep方法使線程睡眠,但是到一定毫秒數時會自動到cpu中等待
wait方法使線程等待,但是不會自動到cpu中等待,要通過notify或者notifyall方法進行喚醒。

以上是讓線程等待的方法,你可以選擇適合你程序的方法。

8. 用java如何實現10個線程 一起完成15個任務(當一個線程完成了一個任務後 在給它另一個任務)

將15個任務放在一個List中,每個線程都循環從任務List中取得一個任務,然後刪除任務List中的這個任務,這個任務完成後繼續循環。任務List為空時,表示所有任務都完成,是所有線程都結束還是進行其他操作,就看你需要了。

9. Java中某一特定線程的具體任務在哪個方法中執行

這個程序的執行順序不不一定的,它的執行順序還跟線程分的時間片有關
CPU運算的時間 是分時間片 分給不同的線程的 一個線程執行完 或者用完了當前它分到的那個時間片 他就得讓出CPU給其他線程使用啦!
線程化是允許多個活動共存於一個進程中的工具。大多數現代的操作系統都支持線程,而且線程的概念以各種形式已存在了好多年。Java 是第一個在語言本身中顯式地包含線程的主流編程語言,它沒有把線程化看作是底層操作系統的工具。
有時候,線程也稱作輕量級進程。就象進程一樣,線程在程序中是獨立的、並發的執行路徑,每個線程有它自己的堆棧、自己的程序計數器和自己的局部變數。但是,與分隔的進程相比,進程中的線程之間的隔離程度要小。它們共享內存、文件句柄和其它每個進程應有的狀態。
進程可以支持多個線程,它們看似同時執行,但互相之間並不同步。一個進程中的多個線程共享相同的內存地址空間,這就意味著它們可以訪問相同的變數和對象,而且它們從同一堆中分配對象。盡管這讓線程之間共享信息變得更容易,但您必須小心,確保它們不會妨礙同一進程里的其它線程。
Java 線程工具和 API 看似簡單。但是,編寫有效使用線程的復雜程序並不十分容易。因為有多個線程共存在相同的內存空間中並共享相同的變數,所以您必須小心,確保您的線程不會互相干擾。
每個 Java 程序都使用線程
每個 Java 程序都至少有一個線程 ― 主線程。當一個 Java 程序啟動時,JVM 會創建主線程,並在該線程中調用程序的 main() 方法。
JVM 還創建了其它線程,您通常都看不到它們 ― 例如,與垃圾收集、對象終止和其它 JVM 內務處理任務相關的線程。其它工具也創建線程,如 AWT(抽象窗口工具箱(Abstract Windowing Toolkit))或 Swing UI 工具箱、servlet 容器、應用程序伺服器和 RMI(遠程方法調用(Remote Method Invocation))。

10. java 一個線程處理多個任務

一個線程是只能執行一個任務,多個任務需要多線程處理。

多線程將多任務的思想拓展到應用,因此,您可以將單個應用中的特定步驟進一步分解成一個個線程,每個線程可以並行運行。操作系統不僅在不同的應用任務間分配處理時間,而且在一項應用的每個線程間分配處理時間。

工程與科學方面的應用程序通常運行於專用的系統(可能沒有多任務化)。而一個多線程NI LabVIEW程序可以被分解成四個線程:用戶界面、數據採集、網路通信以及數據錄入。您可以分別賦予這四個線程的優先順序,以便它們獨立工作。於是,在多線程應用中,多項任務可以與該系統執行的其他應用並行執行。

利用多線程的應用具有以下幾大優勢:

  1. 更有效的CPU利用率

  2. 更好的系統可靠性

  3. 改善多處理器計算機的性能

在許多應用中,您同步地調用資源,如儀器,這些儀器調用時常需要較長的時間完成。在一個單線程應用中,一個同步調用可能會阻止或防止該應用中的其他任務執行,直至該操作完成。而多線程避免了這樣的情況出現。

當同步調用在一個線程中運行時,程序中不依賴於該調用的其它部分可以在其它線程中運行。該程序的執行可以持續地推進,而不是停滯直到完成同步調用。這樣,一個多線程應用實現了CPU使用效率的最大化,因為當該應用的所有線程都可以同時運行時,CPU不會處於空閑狀態。

熱點內容
安卓手機怎麼加速進程 發布:2025-01-18 07:29:48 瀏覽:681
塞恩拐彎腳本 發布:2025-01-18 07:29:37 瀏覽:742
師資配置含哪些內容 發布:2025-01-18 07:17:35 瀏覽:706
江西腳本 發布:2025-01-18 07:14:38 瀏覽:392
php中i方法 發布:2025-01-18 07:13:19 瀏覽:369
FTP寶塔Linux面板 發布:2025-01-18 07:10:05 瀏覽:396
無線網卡怎麼改密碼 發布:2025-01-18 06:54:41 瀏覽:766
ava動態編譯 發布:2025-01-18 06:54:39 瀏覽:765
中國學位論文全文資料庫 發布:2025-01-18 06:43:49 瀏覽:689
全局變數存儲類別 發布:2025-01-18 06:39:29 瀏覽:424