摘要:線程是指進程中的一個執行流程,一個進程中可以運行多個線程。線程總是屬于某個進程,進程中的多個線程共享進程的內存。的使用是開始線程的標志。也是線程的生命周期開始的地方。無論用前面的那種方式使用線程。
Java基礎部分 —— 線程
進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啟動多個線程。比如在Windows系統中,一個運行的exe就是一個進程。
線程是指進程中的一個執行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬于某個進程,進程中的多個線程共享進程的內存。
總的來講,主要涉及三個點“同時”執行是人的感覺,在線程之間實際上輪換執行
Thread 類
Runnable接口
run() 方法 和 start() 方法
所有在線程要做的事,即線程體,都寫在run()方法里面,等待調用,這部分往往處理網絡通信和數據庫處理。
start()的使用是開始線程的標志。也是線程的生命周期開始的地方。無論用前面的那種方式使用線程。
舉例使用線程使用Runnable實現
/** * 實現Runnable接口的類 */ public class DoSomething implements Runnable { private String name; public DoSomething(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } } } /** * 測試Runnable類實現的多線程程序 */ public class TestRunnable { public static void main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); } }
使用Thread類實現:
/** * 測試擴展Thread類實現的多線程程序 */ public class TestThread extends Thread{ public TestThread(String name) { super(name); } public void run() { for(int i = 0;i<5;i++){ for(long k= 0; k <100000000;k++); System.out.println(this.getName()+" :"+i); } } public static void main(String[] args) { Thread t1 = new TestThread("阿三"); Thread t2 = new TestThread("李四"); t1.start(); t2.start(); } }
在整個Java線程中,實現并不是最難的,相反,線程有要注意的幾個難點:
線程的生命周期
線程的優先級與線程調度
線程同步
定時器定時任務:Java中Timer和TimerTask的使用
Future接口Java程序執行超時——Future接口介紹
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64147.html
摘要:線程競爭會引起各種不同的問題,為了分析這些這些問題,你需要使用,能給你提供每個線程的精確狀態信息。使用怎樣解決問題示例當利用率高的異常提取獲取最高使用率的線程。當與的連接保持在不正常的狀態,線程將等待直到超時。 注: 該文章的原文是由 Tae Jin Gu 編寫,原文地址為 How to Analyze Java Thread Dumps 當有障礙,或者是一個基于 JAVA ...
摘要:如圖所示,帶有的所有線程構造方法都可以定義線程組的。線程組還能統一設置組內所有線程的最高優先級,線程單獨設置的優先級不會高于線程組設置的最大優先級。 前面的文章,棧長和大家分享過多線程創建的3種方式《實現 Java 多線程的 3 種方式》。 但如果線程很多的情況下,你知道如何對它們進行分組嗎? 和 Dubbo 的服務分組一樣,Java 可以對相同性質的線程進行分組。 來看下線程類 Th...
摘要:線程的優先級代表線程的優先級為線程代表線程為,而代表該線程對應的操作系統級別的線程。若是有運行圖形界面的環境,也可以使用一些圖形化的工具,例如來生成線程棧文件。使用線程棧定位問題發現死鎖當兩個或多個線程正在等待被對方占有的鎖,死鎖就會發生。 什么是線程棧(thread dump) 線程棧是某個時間點,JVM所有線程的活動狀態的一個匯總;通過線程棧,可以查看某個時間點,各個線程正在做什么...
摘要:線程堆棧最擅長與分析如下類型問題系統無緣無故過高。性能瓶頸如無法充分利用等線程死鎖死循環,餓死等。由于線程數量太多導致系統失敗如無法創建線程等。注意死鎖的兩個或多個線程是不消耗的,有的人認為的使用率是線程死鎖導致的,這個說法是完全錯誤的。 不知覺間工作已有一年了,閑下來的時候總會思考下,作為一名Java程序員,不能一直停留在開發業務使用框架上面。老話說得好,機會是留給有準備的人的,因此...
摘要:時間年月日星期六說明本文部分內容均來自慕課網。慕課網教學源碼無學習源碼第一章課前準備前言課程說明比較和這兩種線程創建的方式,需要知道和的基本創建方式。一旦主線程獲取到了用戶的輸入,這時候,阻塞就會解除掉,主線程繼續運行,直到結束。 時間:2017年07月08日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://g...
摘要:最近聽很多面試的小伙伴說,網上往往是一篇一篇的多線程的文章,除了書籍沒有什么學習多線程的一系列文章。將此線程標記為線程或用戶線程。 最近聽很多面試的小伙伴說,網上往往是一篇一篇的Java多線程的文章,除了書籍沒有什么學習多線程的一系列文章。但是僅僅憑借一兩篇文章很難對多線程有系統的學習,而且面試的時候多線程這方面的知識往往也是考察的重點,所以考慮之下決定寫一系列關于Java多線程的文章...
閱讀 1980·2021-09-26 10:19
閱讀 3249·2021-09-24 10:25
閱讀 1623·2019-12-27 11:39
閱讀 1919·2019-08-30 15:43
閱讀 663·2019-08-29 16:08
閱讀 3504·2019-08-29 16:07
閱讀 902·2019-08-26 11:30
閱讀 1270·2019-08-26 10:41