IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
在計(jì)算機(jī)中當(dāng)一個(gè)程序運(yùn)行的時(shí)候就會(huì)創(chuàng)建至少一個(gè)進(jìn)程,例如當(dāng)我們運(yùn)行QQ的時(shí)候,系統(tǒng)就會(huì)創(chuàng)建進(jìn)程來處理我們平時(shí)的一些操作,當(dāng)我們打開任務(wù)管理器的時(shí)候,在進(jìn)程的列表里面就可以找到QQ.exe的運(yùn)行程序;
在計(jì)算機(jī)中處理進(jìn)程之外還有另一個(gè)概念就是線程,線程是存在于進(jìn)程當(dāng)中,一個(gè)進(jìn)程可以包含多個(gè)線程;當(dāng)我們的計(jì)算機(jī)有多核處理器的時(shí)候,使用多線程可以加快程序的運(yùn)算速率;如果一個(gè)進(jìn)程中只有一個(gè)線程,當(dāng)程序遇到一個(gè)比較耗時(shí)的計(jì)算的時(shí)候,由于程序是單線程的,那么程序只能等待這個(gè)運(yùn)算結(jié)束的時(shí)候再繼續(xù)運(yùn)行,這樣會(huì)大大的降低程序的效率;當(dāng)時(shí)用多個(gè)線程的時(shí)候,在某個(gè)線程遇到比較耗時(shí)的運(yùn)算的時(shí)候,該線程可以繼續(xù)自己的運(yùn)算,但是其他的線程也可以同步進(jìn)行,這樣當(dāng)耗時(shí)的計(jì)算結(jié)束之后,其他線程也將自己所需要的東西執(zhí)行完畢,這樣就會(huì)很大的提高程序執(zhí)行效率;
在程序運(yùn)行中對(duì)于文件的保存相對(duì)于處理器的運(yùn)算速度來說是很慢的,當(dāng)我們程序中接收到一個(gè)保存文件的信息之后,我們可以創(chuàng)建一個(gè)保存文件的線程,在主線程中我們可以繼續(xù)進(jìn)行我們的其他運(yùn)算,這樣當(dāng)文件保存好之后,我們的其他運(yùn)算也會(huì)完成,互不影響;
在Java中我們可以創(chuàng)建一個(gè)自己的類繼承于Thread類,并且重寫run() 方法,當(dāng)線程啟動(dòng)之后,run()方法里面的操作都在線程中進(jìn)行處理,而不會(huì)影響主線程的信息;
當(dāng)我們創(chuàng)建好一個(gè)自定義線程類之后,我們可以創(chuàng)建這個(gè)自定義線程的對(duì)象,進(jìn)行線程的啟動(dòng);線程須調(diào)用start();方法進(jìn)行啟動(dòng),這樣run()方法里面的內(nèi)容才會(huì)在線程中運(yùn)行;如果我們不去調(diào)用start()方法,那我們只是創(chuàng)建了一個(gè)普通的類,即使我們手動(dòng)調(diào)用run()方法,run()方法里面的內(nèi)容也不會(huì)在線程中運(yùn)行;
在Java中線程主要有初始狀態(tài),運(yùn)行狀態(tài),阻塞狀態(tài),終止?fàn)顟B(tài)等;當(dāng)我們新創(chuàng)建一個(gè)線程對(duì)象的時(shí)候,此時(shí)線程的狀態(tài)為初始狀態(tài);當(dāng)我們調(diào)用start()之后,此時(shí)的線程才被激活成為運(yùn)行狀態(tài),之后run()方法里面的信息才會(huì)在子線程中運(yùn)行;我們可以在不同的階段調(diào)用不同的方法將線程設(shè)置為不同的狀態(tài);比如有時(shí)候我們的操作需要等待其他線程中運(yùn)算結(jié)束之后才可以繼續(xù)進(jìn)行,這時(shí)候我們就可以將線程設(shè)置為等待狀態(tài),當(dāng)需要的資源滿足條件之后,可以繼續(xù)運(yùn)行當(dāng)前的線程;
>>本文地址:http://www.yceu.cn/zhuanye/2019/48089.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
上一篇 【Java基礎(chǔ)知識(shí)】Java中的IO是指什么
下一篇 第一頁