4.8多線程--線程運行

擴展內(nèi)容

查看線程

windows

  • tasklist 、tasklist | findstr java (管道運算符)
  • taskkill 、taskkill /F /PID XXX(/F 強制殺死 )

Linux

  • ps -fe 查看所有進程
  • ps -fT -p <PID> 查看某個進程(PID)的所有線程
  • kill 殺死進程
  • top 按大寫 H 切換是否顯示線程
  • top -H -p <PID> 查看某個進程的所有線程

Java

  • jps 命令查看所有 Java 進程
  • jstack <PID> 查看某個進程的所有線程狀態(tài)
  • jconsole 來查看某個Java 進程中線程的運行情況(圖形界面)
jconsole 遠程監(jiān)控配置
  • 需要以如下方式運行你的 java 類
java -Djava.rmi.server.hostname=IP 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=PORT 
-Dcom.sun.management.jmxremote.ssl=true/false(是否啟用安全鏈接) 
-Dcom.sun.management.jmsremote.authenticate=true/false(是否認證) JAVA類
  • 修改 /etc/hosts 文件 將 127.0.0.1 映射到主機名

如果需要認證訪問,還需要做如下步驟

  • 復制 jmxremote.password 文件
  • 修改 jmxremote.password he jmxremote.access 文件的權(quán)限為 600 即文件所有者可讀寫
  • 連接時填入 controlRole(用戶名),R&D(密碼)

線程運行原理

棧與棧幀

Java Virtual Machine Stacks(Java 虛擬機棧)
JVM 由堆、棧、方法區(qū)組成,其中,棧就是給線程使用的,每個線程啟動后,虛擬機就會給其分配一塊棧內(nèi)存。

  • 每個棧由多個棧幀(Frame)組成,對應著每次方法調(diào)用時所占用的內(nèi)存
  • 每個線程只能有一個活動棧幀,對應著當前正在執(zhí)行的那個方法


    image.png

    image.png

    image.png

線程上下文切換(Thread Context Switch)

因為以下原因?qū)е?CPU 不再執(zhí)行當前線程,轉(zhuǎn)而執(zhí)行另一個線程的代碼

  • 線程的 CPU 時間片用完
  • 垃圾回收(垃圾回收線程執(zhí)行時,會暫停其他的工作線程)
  • 有更高優(yōu)先級的線程需要運行(前三種都是被動的)
  • 線程自己調(diào)用了sleep、yield、wait、join、park、synchronized、lock 等方法

當 Context Switch 發(fā)生時,需要有操作系統(tǒng)保存當前線程的狀態(tài),并恢復另一個線程的狀態(tài),Java 中對應的概念就是程序計數(shù)器(Program Counter Register),他的作用是記住下一條 JVM 指令的執(zhí)行地址,是線程私有的

  • 狀態(tài)包括程序計數(shù)器、虛擬機棧中每個棧幀的信息,如局部變量、操作數(shù)棧、返回地址等
  • Context Switch頻繁發(fā)生會影響性能


    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 并發(fā)編程 Java線程 創(chuàng)建和運行線程 查看線程 線程API 線程狀態(tài) 創(chuàng)建和運行線程 方法一,直接使用new T...
    站得高看得遠閱讀 319評論 1 1
  • 并發(fā)編程 1. 概覽 [圖片上傳失敗...(image-d1d9e2-1630336667330)] [圖片上傳失...
    4646ea81318d閱讀 282評論 0 0
  • # 并發(fā)編程 ## 1. 概覽 [圖片上傳失敗...(image-d1d9e2-1630336667330)] [...
    4646ea81318d閱讀 467評論 0 0
  • 進程和線程 進程 程序由指令和數(shù)據(jù)組成,但這些指令要運行,數(shù)據(jù)要讀寫,就必須將指令加載至CPU,數(shù)據(jù)加載至內(nèi)存。在...
    codeMover閱讀 342評論 0 1
  • windows 任務管理器可以查看進程和線程數(shù),也可以用來殺死進程 tasklist 查看進程 taskkill ...
    遞歸宇宙閱讀 455評論 0 0

友情鏈接更多精彩內(nèi)容