Tsim ib txuj kev ncau ntau Threaded neeg rau zaub mov nyob hauv Java

Java Multi-threading

Java Multi-threading – Tsim ib Qho Kev Pab

Txheej txheem cej luam:

Java yog ib hom lus programming ntau yam heev. Nws yuav siv tau los ua ib tug neeg rau zaub mov haib yooj yim. Koj muaj peev xwm tsim ib tug tib neeg rau zaub mov los yog ib qhov kev zoo sib xws nkaus xwb nyob hauv kev pab siv qhov (socket) Java APIs. Txawm li cas los, nyob rau cov tshooj no, Peb yuav tham txog lub tsev ib txuj kev ncau ntau threaded kev pab hauv Java. Peb yuav tham txog cov txheej txheem uas yuav tsum tau tsim cov kev pab thiab peb yuav kuj paub ntau txog ntau yam thiab lwm yam ntsiab lus. Tseem, Peb yuav kawm ntxiv txog qhov kom zoo dua thiab cov disadvantages uas siv ib txuj kev ncau ntau threading pab rau Java. Siv ntau threaded pab yog ib kauj ruam tseem ceeb heev rau kev siv ib compute Server hauv MapReduce. Yog li, Peb yuav saib tsim ib txuj kev ncau ntau threading pab rau qhov tob.







Ntau yam txuj kev ncau ntau yam?

Feem ntau, Lub sij hawm "tej threading" yog xav tias yuav synonymous nrog cov ntsiab lus uas zoo ib yam li "tej programming" los yog "tej kev sib tham". Txawm li cas los, Cov ntsiab lus no ua tau muaj ib lub ntsiab lus txawv heev.

Ua tau, tej yam txuj kev nyuaj-threading lub peev xwm ntawm ib software, ib qho kev khiav hauj lwm, txheej txheem los yog ib qho nyuaj rau tswj ntau tshaj ib tug neeg siv ib zaug. Tej daim ntawv thov yuav txais ntau yam kev thov los ntawm ib tug neeg siv tsis khiav ntau yam zaus ntawm qhov kev pab cuam rau lub computer. Lwm speciality ntawm tej kev pab cuam yog tias lawv sau tej ntaub ntawv thov txog tus neeg siv ua ib thread, Cov neeg siv yuav tsum muaj lwm cov kev pab cuam ib yam nkaus thiab. Txhua yam peb muaj ib tug tshwj xeeb uas tshwj xeeb kom daim ntawv thov yuav yooj yim khaws cov commands muab rau nws. Raws li qhov kev pab cuam pib ua hauj lwm muab rau nws rau ntawd thread thiab yog cuam tshuam los ntawm lwm tus neeg thov los ntawm lwm tus neeg, Nws yuav yog ib tug khiav ntawm qhov kev thov thiab kuj raws li txoj cai ntawm kev ua hauj lwm txog tias thread, mus txog rau thaum ua haujlwm tiav.

Yog li, Ib tug thread yog ib yam dabtsi tab sis ib txoj kev sub-txheej txheem uas tsis noj pem ntau npaum li cas. Nws yog ib qhov me me ntawm computing. Tej yam txuj ci ntau yam thiab txheej txheem muaj lub ntsiab txheej txheem loj ntawm tej kev sib tham.







Txawm li cas los, Peb siv ntau yam threading ntau vim hais tias nws muaj ntau yam kom zoo dua txheej txheem txheej txheem. Cov threads nyob rau tej threading muaj ib hom loj nyob rau hauv lub computer nco. Lawv tsis tas yuav nco ntsoov tej qhov chaw. Yog li, Lawv tseg nco ntsoov cov chaw muab kev pab ntawm lub cev. Tseem, switching contexts yuav siv sij hawm ntau npaum li cas nyob rau hauv rooj plaub ntawm threads tshaj nyob rau hauv cov txheej txheem.

Sockets thiab ris tsho – lub tswv yim conceptual

Lub foob pob ua ntxaij yog ib qho kawg ntawm qhov zoo sib txuas ntawm ob programs khiav ntawm lub network. Qhov xaus-taw tes no yuav tsum tau muaj kev sib txuas lus sib txuas lus ntawm ib qho kev pab thiab ib qhov kev pab cuam. Cov kev pab cuam khiav hauv computer uas hu ua hauv zos thiab tej thaj chaw deb computers. Tab sis npog, Cov kev pab cuam ob no kuj yuav khiav ntawm ib lub computer xwb.

Ua tau, Lub foob pob ua ntxaij mus rau qhov chaw nres nkoj rau lub computer uas nws yog khiav, li ntawd, txhua qhov kev pab cuam uas yog nyob rau lub network thiab muaj tib yam rau socket yuav sib txuas lus nrog cov neeg muab kev pab yooj yim. Cov pab neeg no ua tau muab kev pab rau cov neeg tau kev pab rau cov kev pab cuam rau lub network. Qhov kev pab cuam no xa cov kev pab cuam thov kom lawv tau cov kev pab uas lawv xav kom muab qhov kev pab cuam no, thiab qhov kev pab cuam sab nraud teb raws li.

Qhov yooj yim thiab txoj kev ceev tshaj plaws ntawm tuav cov kev thov no yog los tsim ib tug txuj kev ncau ntau yam kev pab. Tej qhov kev pab cuam ib qho kev pab tsim ib txoj kev rau txhua txhua txoj kev thov nws tau txais los ntawm cov kev pab cuam client programs. Cov thread yog ib cov lus qhia uas khiav txawv ntawm qhov kev pab cuam los yog lwm yam ntshai. Siv qhov no, ib pab tau yooj yim multitask zoo. Nws yuav pib ib tug thread rau ib tug neeg tau thiab ces tseem sib txuas lus nrog lwm cov kev pab cuam.


Zoo li cas yog cov kom zoo dua ib txuj kev ncau ntau threaded?

Lub ntsiab kom zoo dua uas siv ib txuj kev ncau ntau threaded hla ib zaug xwb ib zaug xwb hauv Java no muab hauv qab no:

  • Nws ceev heev thiab tsis khaws cov neeg siv, raws li txhua txhua txoj kev ywj siab ntawm sib thiab qhov kev pab cuam. Yog li, pab yuav teb ntau queries ib zaug.
  • Raws li threads yog ywj siab ntawm sib, Lawv tsis thaiv cov hauj lwm ua hauj lwm ntshai yog hais tias tshwm sim nyob rau hauv cov thread.
  • Thaum nws yuav ua tau ntau haujlwm thaum twg, txuag tau ntau lub sij hawm.
  • Ntev khiav thov yuav ua ib zaug xwb-threaded servers unresponsive, Tiam sis qhov no tsis yog cov ntaub ntawv nyob rau hauv tej xuab moos servers.

Yuav sau ib txuj kev ncau ntau threaded pab?

Tom qab chaws yog ib qho qauv ntau threaded muab los ntawm kev siv Java. Koj yuav khiav thiab kuaj cov zis.

Qhia 1: Qauv multi-threaded pab

[chaws]

import java.net.ServerSocket;

import java.net.net.Socket;

ntshuam java.io.IOException;

ntshuam java.io.InputStream;

chaw nres nkoj java.io.Outputream;

ntshuam java.io.IOException;

import java.net.net.Socket;

Pej xeem kawm MultiThreadedServer DVR Runnable{

kev tiv thaiv hauv kev ua sierver = 8080;

kev tiv thaiv ServerSocketcket = null;

Kev tiv thaiv boolean isStopped = tsis tseeb;

Kev tiv thaiv thread runningThread= null;

Pej xeem MultiThreadedser(chaw nres nkoj){

No pab neeg nover = chaw nres nkoj;

}

pej xeem tsis muaj dabtsis loj zoo li qub (Txoj hlua[]args)throws IOException

{

//MultiThreadedServer pab = tshiab MultiThreadedser(9000);

MultiThreadedServer pab = tshiab MultiThreadedser(8080);

Tshiab thread(neeg rau zaub mov).pib();

sim {

Thread.sleep(20 * 1000);

} ntes (InterruptedException e) {

e.printStackTrace();

}

System.out.println(“Txwv Tsis Pub Nyiaj”);

muab rau neeg noj...();

}

pej xeem qhib(){

synchronized(no){

No khiav = Thread.tam sim no();

}

System.out.println(“Hauv khiav”);

openserverSocket();

Thaum(! khuam siab()){

Socket clientSocket = null;

sim {

System.out.println(“Hauv plawv”);

ClientSocket = no... txais();

} ntes (IOException e) {

System.out.println(“Hauv ntes”);

Yog hais tias(khuam siab()) {

System.out.println(“neeg raug noj txwv.”) ;

rov qab mus;

}

pov RuntimeException tshiab(

“Yuam kev txais neeg tau kev twb kev txuas”, e);

}

System.out.println(“hu rau WorkerRunnable”);

Tshiab thread(

Neeg ua hauj lwm tshiab(

neeg muaj mob xiam oob khab, “Multithreaded Server”)

).pib();

}

System.out.println(“neeg raug noj txwv.”) ;

}

ntiav synchronized boolean yogStopped() {

Rov qab no... yogStopped;

}

Pej xeem synchronized tsis txhob nres(){

Qhov no yog isStopped = muaj tseeb;

sim {

qhov no... serverSocket.kaw();

} ntes (IOException e) {

pov RuntimeException tshiab(“Yuam kev kaw”, e);

}

}

ntiav openServerSocket() {

sim {

System.out.println(“Hauv openServocket”);

No.serverSocket = tshiab ServerSocket(no pab raws li cov kev ua si nawv);

} ntes (IOException e) {

pov RuntimeException tshiab(“Tsis tau qhib 8080”, e);

}

}

}

Hoob Kawm WorkerRunnable dluab Runnable{

kev tiv thaiv cov kab mob clientSocket = null;

Txoj hlua tiv thaiv kab mob serverText = null;

Pej xeem WorkerRunnable(Socket clientSocket, Txoj hlua serverText) {

Qhov no.clientSocket = clientSocket;

No.serverText = serverText;

}

pej xeem qhib() {

sim {

System.out.println(“Hauv Kev Thov Txheej Txheem”);

Inputream input = clientSocket.getinputream();

Tso zis Outputream = clientSocket.getOutputream();

Sij hawm ntev = System.tam sim no();

sau zajlus...((“HTTP/1.1 200 OK nqaij npawb n/nWorkerRunnable: ” +

nws tus kheej serverText + ” – ” +sij hawm tsawg zaus””).tau txais());

ze ze ntawm();

txee...();

System.out.println(“Kev Thov Txheej Txheem: ” + lub sij hawm);

} ntes (IOException e) {

//tshwj tej qhov chaw.

e.printStackTrace();

}

}

}

[/chaws]

Cov teeb meem loj yog dab tsi?

Txawm muaj ntau yam kom zoo dua rau tej kev pab cuam, Muaj ntau ntau disadvantages ib yam nkaus thiab. Tej no yog muab rau hauv qab no:

  • Sau tsis yooj yim: Txoj kev tsim ntau yam kev pab cuam yuav tsis yooj yim heev. Tsuas yog cov kws muaj txuj yug noj yug haus xwb.
  • Tsis yooj yim rau debug: Nrhiav qhov tseem ceeb ua kom ib qho yuam kev rau ib tug txuj kev nyuaj threaded nyuaj heev.
  • Kev ntsuam xyuas constraints: Raws li cov errors rau ib txuj kev ncau ntau threaded muaj feem xyuam rau sij hawm poob matters, Nws yog ib qho nyuaj heev rau txoj kev pab ib zaug xwb.



Xaus:

Ib txuj kev ncau ntau threaded yog qhov xav tau ntawm lub teev hauv no ceev mus ntiaj teb. Zoo li no ib pab yuav teb rau nws tus neeg tau queries sai heev thiab npaum. Txawm li cas los, tsim zoo li no ib pab tsis yog ib qho yooj yim, No tsab xov xwm no muaj tham txog tag nrho cov kev sib tham txog txoj kev tsim cov kev pab, Los ntawm cov tswvyim loj rau txoj kev nws tus kheej. Txheej txheem no, ua raws nraim li, yooj yim pab koj tsim ib tug zoo multi-threaded pab neeg rau hauv Java.

 

============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share