文/王敏
多線程機(jī)制的引進(jìn)體現(xiàn)在多個(gè)方面,如在計(jì)算機(jī)上的使用,人們可以在同時(shí)在一臺(tái)計(jì)算上完成不同的工作,比如聽(tīng)歌、語(yǔ)音視頻、圖片搜索等任務(wù)。這些都可以通過(guò)多線程機(jī)制的出現(xiàn)來(lái)實(shí)現(xiàn)這個(gè)構(gòu)想。多線程是Java語(yǔ)言的重要特點(diǎn)之一多線程的意思就是說(shuō),對(duì)于不同的線程,它所要完成的任務(wù)基本上大不相同。同時(shí)同步機(jī)制用能夠保證這些任務(wù)在同時(shí)進(jìn)行的過(guò)程中,不會(huì)出現(xiàn)相互干擾和妨礙的情況。如網(wǎng)絡(luò)售票,就是在這種機(jī)制下進(jìn)行售票,實(shí)現(xiàn)了多個(gè)售票點(diǎn)同時(shí)售票,且互不干擾。
Java語(yǔ)言?xún)?nèi)置了多個(gè)線程的支持,因此才能實(shí)現(xiàn)幾個(gè)相對(duì)獨(dú)立的線程同時(shí)運(yùn)行,這是一項(xiàng)比較發(fā)達(dá)的信息技術(shù)。多線程機(jī)制的實(shí)現(xiàn)主要靠的是Java虛擬機(jī),這是非常復(fù)雜的程序運(yùn)作,每次當(dāng)程序啟動(dòng)的時(shí)候虛擬機(jī)也會(huì)跟著程序的啟動(dòng)而啟動(dòng),接著會(huì)加載出主要的方法代碼,雖然過(guò)程比較的曲折,但在接著就是所謂的“主線程”即將首先啟動(dòng)。但是很有可能在加載方法代碼的時(shí)候出現(xiàn)了其他的線程,這些線程不會(huì)去占據(jù)主線程的位置,而是各自的獨(dú)立存在。這時(shí)候Java的作用就顯現(xiàn)出來(lái)了,它同時(shí)切換主線程和其他的線程,來(lái)保證每一個(gè)線程都有機(jī)會(huì)來(lái)獲得線程代碼的執(zhí)行,同時(shí)使用CPU資源,完成任務(wù)。
在Java語(yǔ)言中,創(chuàng)建線程的最主要的方法主要有兩種,第一種就是通過(guò)Thread類(lèi)的子類(lèi)來(lái)創(chuàng)建線程,對(duì)于這個(gè)方法,在開(kāi)發(fā)的過(guò)程中由于受到多重的限制,在進(jìn)行多個(gè)線程共享資源時(shí)可能會(huì)出現(xiàn)問(wèn)題,所以不太適合用這一種方法。對(duì)于第二種就是通過(guò)實(shí)現(xiàn)Runnable接口來(lái)實(shí)現(xiàn)創(chuàng)建線程的目的,對(duì)于種種方法,優(yōu)點(diǎn)比較明顯,靈活性好、還能夠?qū)崿F(xiàn)資源的共享。所以在進(jìn)行網(wǎng)絡(luò)售票時(shí)用的就是第二種方法。網(wǎng)絡(luò)售票是可以在多個(gè)售票點(diǎn)同時(shí)進(jìn)行售票,每一個(gè)售票點(diǎn)的活動(dòng)都可以看成是一個(gè)線程,但是,在運(yùn)行的過(guò)程中發(fā)現(xiàn)了一些問(wèn)題,就是比如兩個(gè)大不相同的售票點(diǎn)售得票是一樣的,但是賣(mài)出的時(shí)候可能兩個(gè)人買(mǎi)的同一張票,或者是票已經(jīng)被售完,但在網(wǎng)上顯示的還是售票中。所以為了解決這些問(wèn)題,引入了多線程的同步機(jī)制。
所謂多線程同步機(jī)制是在多線程機(jī)制之下發(fā)展和完善起來(lái)的,這種機(jī)制即在一個(gè)線程對(duì)變量進(jìn)行訪問(wèn)時(shí),其他的多個(gè)線程被禁止訪問(wèn)這個(gè)變量,這樣既能夠做到多個(gè)線程同時(shí)啟動(dòng),但在啟動(dòng)之后,不允許多個(gè)線程對(duì)如同一個(gè)變量同時(shí)進(jìn)行訪問(wèn),這樣出現(xiàn)的問(wèn)題也就得到了解決,系統(tǒng)的效率得到提高,在工作過(guò)程中,一些原來(lái)的問(wèn)題都不會(huì)再出現(xiàn),系統(tǒng)的負(fù)擔(dān)變小,效率更高。
如今人們的生活水平不斷地提高,人們娛樂(lè)的方式也在增加電影院作為其中重要的一部分,數(shù)量在逐漸增加。網(wǎng)絡(luò)系統(tǒng)的發(fā)展,能夠讓人們?cè)诩抑幸材軌蛲瓿蓪?duì)電影票的購(gòu)買(mǎi),既方便又便宜。所以多線程同步機(jī)制應(yīng)用在網(wǎng)絡(luò)售票系統(tǒng)中是非常有必要的。網(wǎng)絡(luò)售票系統(tǒng)中,每一個(gè)售票點(diǎn)都可以作為一個(gè)線程,而待售的票就被視為共享的資源,在開(kāi)始售票之前,首先要做的就是一個(gè)線程應(yīng)該取得改票的絕對(duì)擁有權(quán),在票被賣(mài)出之后,就可以及時(shí)的通知其他的售票點(diǎn),及時(shí)更改和完善網(wǎng)絡(luò)信息。多線程同步機(jī)制在網(wǎng)絡(luò)售票系統(tǒng)之中應(yīng)用之后,解決了一個(gè)大問(wèn)題,方便人們?cè)谶M(jìn)行電影票的購(gòu)買(mǎi)時(shí)得到公平的對(duì)待,如果沒(méi)有同步機(jī)制的引進(jìn),在購(gòu)票時(shí)會(huì)出現(xiàn)兩個(gè)人同時(shí)購(gòu)買(mǎi)一張票的情況,在處理這類(lèi)問(wèn)題的時(shí)候,電影院會(huì)因?yàn)轭櫩偷碾娪捌彼袡?quán)而焦頭爛額,影響影院在顧客心中的形象,也會(huì)影響電影院的正常營(yíng)業(yè),造成一定的損失。
總而言之,Java多線程同步機(jī)制的引入,使得網(wǎng)絡(luò)售票系統(tǒng)的問(wèn)題得到解決,方便了顧客,也對(duì)電影院有好處。多線程對(duì)同一資源進(jìn)行訪問(wèn)得到了限制,可以使共享資源同時(shí)進(jìn)行訪問(wèn),但是又可以防止線程的占用問(wèn)題。多線程同步機(jī)制的應(yīng)用,防止了同一張票被幾個(gè)售票點(diǎn)同時(shí)賣(mài)出的問(wèn)題。因此不只是網(wǎng)絡(luò)售票系統(tǒng),在其他的領(lǐng)域,只要合理的使用多線程同步機(jī)制,不僅可以提高資源共享的安全性,也能夠提高系統(tǒng)的執(zhí)行效率。無(wú)論對(duì)各個(gè)行業(yè)的發(fā)展都有極大的幫助。如今已是網(wǎng)絡(luò)信息化時(shí)代,因此系統(tǒng)的完善和發(fā)展必不可少,而多線程同步機(jī)制的出現(xiàn)正好是發(fā)展的一個(gè)機(jī)遇也可說(shuō)是挑戰(zhàn),合理的對(duì)其利用和發(fā)展,一定促使我國(guó)的信息化水平得到一個(gè)很大的提高。