Está en la página 1de 12

&RQFHSWRGHKLOR

HILOS

+LOR RFRQWH[WRGHHMHFXFLyQ RSURFHVROLJHUR HVXQIOXMRGH


FRQWUROVHFXHQFLDO GHQWURGHXQSURJUDPD
(VGHFLUFDGDKLORWLHQH
8QFRPLHQ]R
8QDVHFXHQFLDGHHMHFXFLyQ
8QILQDO

(QFDGDLQVWDQWHFRQFUHWRVyORKD\XQ~QLFRSXQWRGHHMHFXFLyQ

(QORVSURJUDPDVYLVWRVKDVWDDKRUDHOSURJUDPDGRUVyORKD
HVSHFLILFDGRGHIRUPDH[SOtFLWDXQ~QLFRIOXMRVHFXHQFLDOGH
FRQWUROGHOSURJUDPD
/RVKLORVVLQHPEDUJRQRVRQSURJUDPDV SRUTXHQRSXHGHQVHU
HMHFXWDGRVSRUHOORVPLVPRVVyORHVSRVLEOHKDFHUORGHQWURGHXQ
SURJUDPDDOJXQDGHFX\DVWDUHDVVtHVUHDOL]DGDSRUXQKLOR
(VWHWHPDVHGHGLFDDH[SOLFDUFyPRVHSXHGHHMHFXWDU
VLPXOWiQHDPHQWHRHQSDUDOHORPiVGHXQIOXMRGHFRQWURO
VHFXHQFLDORKLOR
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

'HILQLFLyQGHKLOR
HILOS

3RUORWDQWRXQ KLORHV
8QIOXMRGHFRQWUROVHFXHQFLDOVLPSOHGHQWURGHXQSURJUDPD

3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

*HQHUDOLGDGHVUHVSHFWRKLORV
HILOS

/DSURJUDPDFLyQFRQKLORVSXHGHUHVXOWDUIDUUDJRVD
'HVGH-DYDVHGLVSRQHGHODVFODVHV
Timer SDUDSODQLILFDUODHMHFXFLyQGHGLIHUHQWHVWDUHDV
TimerTask HQXQPRPHQWRGHWHUPLQDGR
TimerTask WDUHDV TXHSXHGHQSODQLILFDUVH
<H[FHSWRTXHVHDQHFHVDULDXQDJHVWLyQGHKLORVPiVVRILVWLFDGD
HVUHFRPHQGDEOHXWLOL]DUODV
6HGHMDDODOXPQRODIDPLOLDUL]DFLyQFRQHVWDVFODVHVPHGLDQWHOD
D\XGDGHOVLVWHPD
(OREMHWRGHHVWHWHPDHVODJHVWLyQGHKLORVVLQHOXVRGHHVWDV
FODVHVDX[LOLDUHV
/DGLVWLQFLyQ HQWUHSURFHVR\SURFHVROLJHUR KLOR FRQVLVWHHQ
TXHORVSULPHURV VXHOHQWHQHU FRSLD ORVPLVPRV UHFXUVRV TXHXQ
SURJUDPD FRPSOHWRVLQHPEDUJRORV~OWLPRVFRPSDUWHQ JUDQ
SDUWHGHORVUHFXUVRV GHOSURFHVRTXHHMHFXWDHOSURJUDPDDOTXH
SHUWHQHFHQ
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

,QWURGXFFLyQDOWUDEDMRFRQKLORV
HILOS

/DFODVHThread GHMDYDSURSRUFLRQDDOSURJUDPDGRUODJHVWLyQ GH


KLORV
(OPpWRGRrun HVHQHOTXHVHFRGLILFDOR TXH WLHQH TXHHMHFXWDU HO
KLORSXHGHFRQWHQHUFXDOTXLHU LQVWUXFFLyQ -DYD
(Q-DYDVHSXHGHFUHDU XQ KLOR LQVWDQFLDQGR new FODVHV
FUHDGDVGHODVGRV VLJXLHQWHVPDQHUDV
,PSOHPHQWDQGR HOLQWHUID] Runnable PpWRGRrun
+HUHGDQGR GHODFODVH Thread \VREUHHVFULELHQGR HOPpWRGRrun

3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

+HUHGDUGHThread
HILOS

(QHVWHFDVRVHWLHQHTXHGDUORVVLJXLHQWHVSDVRV
&UHDUXQDFODVH ODOODPDUHPRVClaseThread TXHKHUHGH GHThread \
TXHVREUHVFULED HOPpWRGRrun FRQHOFyGLJRTXHVHGHVHDHMHFXWDU
GHQWURGHOKLOR
6HQHFHVLWDUiXQREMHWRGHHVWDFODVH OROODPDUHPRVnuevo_thread
3DUDFRPHQ]DU ODHMHFXFLyQ GHOKLORHVVXILFLHQWHHMHFXWDUHOPpWRGR
start GHnuevo_thread

(VWDRSFLyQSXHGHUHVXOWDUSUREOHPiWLFD FXDQGRHVWDPRV
LQWHUHVDGRVHQTXHODFODVH TXHWHQGUtDTXHGHILQLUHOKLORWLHQH
TXHKHUHGDU GHRWUD FODVH

3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

,PSOHPHQWDURunnable
HILOS

(QHVWHFDVRVHWLHQHTXHGDUORVVLJXLHQWHVSDVRV
&UHDUXQDFODVH ODOODPDUHPRVClaseRunnable TXHLPSOHPHQWHHO
LQWHUID] Runnable SRUWDQWRFRGLILFDUi HOPpWRGRrun
6HQHFHVLWDUiXQREMHWR GHHVWDFODVH OROODPDUHPRVnuevo_runnable
&UHDU XQREMHWR OROODPDUHPRVnuevo_thread GHODFODVH Thread FRQ
FXDOTXLHUDGHORVFRQVWUXFWRUHV TXHDGPLWHFRPRDUJXPHQWR XQ
REMHWR GHXQDFODVHTXHLPSOHPHQWH HOLQWHUID] Runnable 
SURSRUFLRQDQGRnuevo_runnable HQVXDUJXPHQWRRunnable
3DUDFRPHQ]DU ODHMHFXFLyQ GHOKLORHVVXILFLHQWHHMHFXWDU HOPpWRGR
start GHnuevo_thread

(VWDRSFLyQHVODDGHFXDGD FXDQGRHVWDPRVLQWHUHVDGRV HQTXHOD


FODVH TXHWHQGUtDTXHGHILQLUHOKLOR WLHQHTXHKHUHGDUGHRWUD
FODVH

3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

(MHPSOR ,
HILOS

(MHPSORE~VTXHGDOLQHDOELGLUHFFLRQDO
$FRQWLQXDFLyQVHPRVWUDUiXQHMHPSORGHXVRGHKLORV
6HWUDWDGHSURSRUFLRQDUXQDOJRULWPRGHE~VTXHGDGHXQGDWR HQ
XQDUUD\ GHGDWRVGHVRUGHQDGRV
3DUDHOORVHFUHDUiGRVKLORV TXHUHDOL]DUiQE~VTXHGDVHFXHQFLDO
8QR GHHOORVUHDOL]DUiODE~VTXHGD OLQHDOGHVGHHOFRPLHQ]R GHODUUD\HQ
ODSULPHUDPLWDG GHOPLVPR
(ORWUR ODUHDOL]DUiGHVGH HOILQDO GHODUUD\HQODVHJXQGD PLWDG GHO
DUUD\

6HFUHDUiXQDFODVHHiloBuscadorDesdePrincipio TXHKHUHGD GHOD


FODVHThread \RWUDFODVHHiloBuscadorDesdeFinal TXHLPSOHPHQWD HO
LQWHUID]Runnable
$PEDVFODVHVWLHQHQODPLVPDHVWUXFWXUD\PpWRGRV

8QDFRSLDSURSLDGHODUUD\GHGDWRVGRQGHVHEXVFD
(OGDWR EXVFDGR
(OQ~PHUR GHRSHUDFLRQHVUHDOL]DGDV
8QLQGLFDGRUOyJLFR VREUHVLVHWHUPLQyODE~VTXHGDFRQp[LWR
&RQVWUXFWRUHV
(OPpWRGRrun SDUDHMHFXWDUODE~VTXHGDOLQHDOFRUUHVSRQGLHQWH
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

(MHPSOR ,,
HILOS

(MHPSOR FRQW
import java.io.*;
6HXWLOL]DHQWUDGDVDOLGD
class HiloBuscadorDesdePrincipio extends Thread {
&UHDFLyQGHOQXHYRKLORKHUHGHUDGH7KUHDG
public int []datos;
public int dato_buscado;
$WULEXWRVGHOKLOR
&RQVWUXFWRUHV
public int num_operaciones = 0;
public boolean finalizo_con_exito = false;
public HiloBuscadorDesdePrincipio (){}
public HiloBuscadorDesdePrincipio(int dato, int[]datos){ dato_buscado = dato; this.datos = datos;}
public void run(){ int i;
0pWRGRUXQ
System.out.println("SE BUSCARA ENTRE 0 Y "+ Math.floor(datos.length/2.0) );
for (i = 0; i < Math.floor(datos.length/2.0); i++) {
for (int j = 0; j<100; j++) System.out.print("P");
3DUDSHUPLWLULQWHUFDPELRGHKLORV
num_operaciones++;
System.out.print("[P"+num_operaciones+"]");
if (dato_buscado == datos[i] ) {
System.out.println("");
System.out.println("==> PRINCIPIO:"+dato_buscado+" ENCONTRADO EN "+i);
finalizo_con_exito = true;
return;}}
if (i == Math.floor(datos.length/2.0)) System.out.println("==> PRINCIPIO: FALLO ");}}
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

(MHPSOR ,,,
HILOS

(MHPSOR FRQW
class HiloBuscadorDesdeFinal implements Runnable{
&UHDFLyQGHOQXHYRKLORLPSOHPHQWDQGR
5XQQDEOH
public int []datos;
public int dato_buscado;
$WULEXWRVGHOKLOR
&RQVWUXFWRUHV
public int num_operaciones = 0;
public boolean finalizo_con_exito = false;
public HiloBuscadorDesdeFinal (){}
public HiloBuscadorDesdeFinal(int dato, int[]datos){dato_buscado = dato; this.datos = datos; }
public void run(){ int i;
0pWRGRUXQ
System.out.println("SE BUSCARA ENTRE "+(datos.length-1)+" Y "+ Math.ceil(datos.length/2.0) );
for ( i = datos.length-1; i > Math.ceil(datos.length/2.0); i--){
for (int j = 0; j<100; j++) System.out.print("F");
3DUDSHUPLWLULQWHUFDPELRGHKLORV
num_operaciones++;
System.out.print("[F"+num_operaciones+"]");
if (dato_buscado == datos[i] ){
System.out.println("");
System.out.println("==>FINAL:"+dato_buscado+" ENCONTRADO EN "+i);
finalizo_con_exito = true;
return;}}
if (i == Math.ceil(datos.length/2.0))
System.out.println("==> FINAL FALL"); }}
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

(MHPSOR ,9
HILOS

(MHPSOR FRQW
&ODVHSULQFLSDO
public class BusquedaLinealBidimensional
{
public static void main (String [] args) throws IOException
{
int [] array_datos = { 12,7,3,11,9,0,13,5,7,10,2,1,6,4,8};
int [] array_datos_principio = { 12,7,3,11,9,0,13,5,7,10,2,1,6,4,8};
int [] array_datos_final = { 12,7,3,11,9,0,13,5,7,10,2,1,6,4,8};

$UUD\VGHGDWRVSDUD
EXVFDU

HiloBuscadorDesdePrincipio buscador1 = new HiloBuscadorDesdePrincipio(3, array_datos_principio);


HiloBuscadorDesdeFinal run_buscador2 = new HiloBuscadorDesdeFinal(3, array_datos_final );
Thread buscador2 = new Thread(run_buscador2);
&UHDFLyQGHORVKLORV
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String str_opcion;
System.out.println("ESCRIBA EL NUMERO QUE DESEA
BUSCAR ENTRE EL 0 Y EL 13");
str_opcion = br.readLine();
opcion = new Integer(str_opcion).intValue();
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23

/HFWXUDGHOQ~PHURTXHVHGHVHD
EXVFDU



(MHPSOR 9
HILOS

(MHPSOR FRQW
while ( opcion != -1 ) {
System.out.println("SE BUSCARA EL NUMERO "+opcion);
buscador1.dato_buscado = opcion;
run_buscador2.dato_buscado = opcion;
buscador2 = new Thread(run_buscador2);
buscador1 = new HiloBuscadorDesdePrincipio
(opcion, array_datos_principio);
buscador2.start();
buscador1.start();

&UHDFLyQ\DUUDQTXHGHORVGRVKLORV
HVQHFHVDULRFUHDUQXHYRVKLORV\DTXH
HQFDGDLWHUDFLyQVHPXHUHQORVKLORV
\QRVHSXHGHQYROYHUDDUUDQFDUVLQ
FUHDUORVGHQXHYR

while ( buscador2.isAlive() || buscador1.isAlive() ) ;


6HHVSHUDDTXHORVGRVKLORVPXHUDQ
System.out.println("LA BSQUEDA HA TERMINADO");
System.out.println("ESCRIBA EL NUMERO QUE DESEA BUSCAR ENTRE EL 0 Y EL 13");
str_opcion = br.readLine();
6HOHHHOQXHYRGDWRTXHVHGHVHDEXVFDU
opcion = new Integer(str_opcion).intValue();
}
}}
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23



(MHPSOR 9,
HILOS

&RQFOXVLRQHVGHOHMHPSORE~VTXHGDOLQHDOELGLUHFFLRQDO
6HKDPRVWUDGRYDULRVDVSHFWRVGHODJHVWLyQGHKLORV

&yPRVHSURSRUFLRQDXQPpWRGRrun DXQKLORKHUHGDQGR GHThread


&yPRVHSURSRUFLRQDXQPpWRGRrun DXQKLORLPSOHPHQWDQGR Runnable
&yPRVHDUUDQFDXQKLOR start
&yPRVHVDEHVLXQKLORHVWiYLYR isAlive
&yPRIRU]DUHOLQWHUFDPELR GHKLORV
1HFHVLGDGGHFUHDU GHQXHYR XQKLORSDUDUHDUUDQFDUOR VLKDPXHUWR

6RQHYLGHQWHVODVVLJXLHQWHVFDUHQFLDV GHHVWHPRGHOR
'LILFXOWDGSDUDVLQFURQL]DUWRGRVORVKLORV
1RVDEHPRVFyPRLQGLFDUDOEXVFDGRUTXHQRSXHGHHQFRQWUDUHOGDWRTXH
GHMHGHEXVFDUFXDQGRHORWURWHUPLQDFRQp[LWR
'LILFXOWDGSDUDFRPSDUWLULQIRUPDFLyQGHPDQHUDFRQFXUUHQWHSRGHPRV
FRQRFHUFXiQWDVRSHUDFLRQHVKDUHDOL]DGRFDGDEXVFDGRUSHURQRVDEHPRV
FyPRDFFHGHUGHIRUPDFRQFXUUHQWHDLQIRUPDFLyQFRP~QVHSRGUtD
DFWXDOL]DUFRQFXUUHQWHPHQWHXQDYDULDEOHFRP~QSDUDHOQ~PHURGH
RSHUDFLRQHV"

$ORODUJRGHHVWHWHPDSODQWHDUHPRVVROXFLRQHVDHVWRVSUREOHPDV
6LQFURQL]DFLyQGHKLORV
6HFFLRQHVFUtWLFDVFRPSDUWLFLyQGHUHFXUVRV
3URJUDPDFLyQ2ULHQWDGDD2EMHWRV$23



También podría gustarte