日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 进程描述_java 进程和线程

發(fā)布時間:2025/3/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 进程描述_java 进程和线程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是進程,什么是線程?

進程:是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位,是一個動態(tài)概念,競爭計算機系統(tǒng)資源的基本單位。

線程:是進程的一個執(zhí)行單元,是進程內(nèi)科調(diào)度實體。比進程更小的獨立運行的基本單位。線程也被稱為輕量級進程。

一個程序至少一個進程,一個進程至少一個線程。

進程線程的區(qū)別:

1、地址空間:同一進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間。

2、資源擁有:同一進程內(nèi)的線程共享本進程的資源,但是進程之間的資源是獨立的。

3、一個進程崩潰后,在保護模式下不會對其他進程產(chǎn)生影響,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯。

4、進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好于進程。同樣如果要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程不能用進程。

5、執(zhí)行過程:每個獨立的進程程有一個程序運行的入口、順序執(zhí)行序列和程序入口。但是線程不能獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。

6、線程是處理器調(diào)度的基本單位,但是進程不是。

7、兩者均可并發(fā)執(zhí)行。

優(yōu)缺點:

線程執(zhí)行開銷小,但是不利于資源的管理和保護。線程適合在SMP機器(雙CPU系統(tǒng))上運行。

進程執(zhí)行開銷大,但是能夠很好的進行資源管理和保護。進程可以跨機器前移。

什么地方會用到多線程?

1、后臺線程:比如定期執(zhí)行一些特殊任務(wù),如定期更新配置文件,任務(wù)調(diào)度,一些監(jiān)控用于定期信息采集等。

2、最典型的應(yīng)用比如tomcat,tomcat內(nèi)部采用的就是多線程,上百個客戶端訪問同一個web應(yīng)用,tomcat接入后都是把后續(xù)的處理扔給一個新的線程來處理,這個新的線程最后調(diào)用到我們的servlet程序,比如doGet或者doPost方法。還有就是需要異步處理的時候,需要使用多線程。

3、特別耗時的操作,如備份數(shù)據(jù)庫,可以開個線程執(zhí)行備份,然后執(zhí)行返回,前臺不斷向后臺詢問線程執(zhí)行狀態(tài)。

多線程有幾種實現(xiàn)方法?有什么區(qū)別?

實現(xiàn)多線程有兩種方式:(自JDK1.5之后有三種,最后一種并不常用)

1.繼承Thread類

2.實現(xiàn)Runnable接口(Callable接口)

一個類如果實現(xiàn)了Runnable接口或者繼承了Thread類,那么它就是一個多線程類,如果是要實現(xiàn)多線程,還需要重寫run()方法,所以run() 方法是多線程的入口。

多線程的兩種實現(xiàn)方式的區(qū)別:

1.Thread是Runnable接口的子類,實現(xiàn)Runnable接口的方式解決了Java單繼承的局限

2.Runnable接口實現(xiàn)多線程比繼承Thread類更加能描述數(shù)據(jù)共享的概念

多線程有幾種實現(xiàn)同步方法?

同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notify

wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。

sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。

notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。

Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。

產(chǎn)生死鎖的原因?

產(chǎn)生死鎖的四個必要條件:

1、互斥條件:一個資源每次只能被一個進程使用。

2、請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。

3、不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。

4、循環(huán)等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

避免死鎖

上面列出了死鎖的四個必要條件,我們只要想辦法破其中的任意一個或多個條件,就可以避免死鎖發(fā)生,一般有以下幾種方法:

1、按同一順序訪問對象。

2、避免事務(wù)中的用戶交互。

3、保持事務(wù)簡短并處于一個批處理中。

4、使用較低的隔離級別。

5、使用基于行版本控制的隔離級別。

6、使用綁定連接。

以上就是有關(guān)進程和線程的總結(jié),有什么好的意見歡迎大家留言。

總結(jié)

以上是生活随笔為你收集整理的java 进程描述_java 进程和线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。