Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Acerca de
Contacto
Emoticones en comentarios!!!
Programacion
HTML5
Java
Linux
Celulares
Humor
SUSCRIPCINALBLOG
Monillo007+
Agregameatucrculodeamigosen Google+
Sgueme
Puedes seguir mis actualizaciones en Twitter
Facebook
Dale 'Me gusta' en Facebook
ARTICULOS RECIENTES
TEMAS
Actualidad
El programador de hilos:: EnlamquinavirtualdeJavaexistealgoquellamamoselprogramador de hilos que es el encargadodedecidirquhiloeselquesevaaejecutarporelprocesadorenunmomento determinadoycundoesquedebedepararopausarsuejecucin.Asumiendoquesetiene un equipo de un solo procesador, solo un proceso puede estar corriendo en un momento dado, como lo hemos mencionado anteriormente, la idea de multi-proceso o multithreading es meramente aparente. Para que un hilo sea elegible para ser ejecutado, este debe de estar en estado en ejecucin(runnable),siseencuentraencualquierotroestadonopodrser elegible por el programador de hilos. Es importante tomar en cuenta que... "Elordenenqueunhiloenestadodeejecucinesescogidoporelprogramadordehilos no es garantizado".
Analisis Patrocinados Android Anecdotario Aplicaciones B a s e s d e d a t o s Bloggers / Webmasters Celulares Chrome Citas
Conciertos Crticas Comentarios X Curiosidades Cmolehagopara... eBooks
Elecciones 2012 email Empleo E n m i o p i n i n Entretenimiento Eventos Facebook Firefox Frases Gamers Ganar Dinero Gmail Google Google+
Hardware
HTML5
Humor Imgenes
Internet Invitaciones iPod iReport Java Linux Londres 2012 Manuales Mi blog Musica MySQL NetBeans No recomiendo... Noticias Ocio
Oracle
Pelculas
Poemas
Preguntas tontas
Page 1 / 7
Twitter Ubuntu
Videos Wallpapers
...aunque no podemos controlar al programador de hilos, en algunas ocasiones podemos influenciarlomandandoallamaralgunosmtodoscontenidosenlaclase java.lang.Thread.
LOMSVISITADO
Losmtodosdelaclasejava.lang.Thread:: Algunosmtodosdeestaclasenospuedenayudarainfluenciaralprogramadordehilosa tomarunadecisinsobrequhiloejecutarenqumomento.Losmtodossonlossiguientes: + public static void sleep(long milisegundos) throws InterruptedException + public static void yield() + public final void join() throws InterruptedException + public final void setPriority(int nuevaPrioridad) Nota:elmtodosleep() y join() tienen versiones sobrecargadas que no hemos mencionado. Algunosmtodosdelaclasejava.lang.Object:: Recordemos que toda clase en Java hereda de la clase Object, por lo tanto, cualquier objetodecualquiertipotienetodoslosmtodosdelaclaseObjectpordefecto.Enestecaso analizaremosalgunosdeellosquenossontilesenelmanejodehilos: + public final void wait() throws InterruptedException + public final void notify() + public final void notifyAll() Elmtodowait() define 3 versiones sobrecargadas, incluyendo la mencionada anteriormente. Antesdemencionarelcomportamientodelosmtodosanteriormentemencionados, analicemosalgunosestadosmsenlosqueunhilosepuedeencontrarysusrespectivas transiciones. Estados de los hilos y transiciones:: Ya hemos visto 3 estados de los hilos - nuevo,enejecucinymuerto- pero hay algunos otros bastante importantes. Analicemos cada uno de ellos: - Nuevo (new):Esteeselestadoenqueunhiloseencuentradespusdequeunobjetode laclaseThreadhasidoinstanciadoperoantesdequeelmtodostart() sea llamado. - Enejecucin(runnable): Este es el estado en que un hilo puede ser elegido para ser ejecutadoporelprogramadordehilosperoannoestcorriendoenelprocesador.Se obtieneesteestadoinmediatamentedespusdehacerlallamadaalmtodostart() de una instancia de la clase Thread. - Ejecutndose(running):Esteeselestadoenelqueelhiloestrealizandoloquedebede hacer,esdecir,estrealizandoeltrabajoparaelcualfuediseado. - Esperando/bloqueado/dormido (waiting/blocked/sleeping): Es el estado en el cual el hiloestvivoanperonoeselegibleparaserejecutado,esdecir,noestenejecucinpero puedeestarlonuevamentesialgneventoenparticularsucede.Porejemplo,unhilopuede estardurmiendoporqueenelcdigoselehapedidoquelohagaperopasaaestadoen ejecucincuandoeltiempoqueselepididormirhaexpirado. - Muerto (dead): Unhiloestmuertocuandosehancompletadotodoslosprocesosy operacionescontenidosenelmtodorun(). Una vez que un hilo ha muerto NO puede volver nuncaaestarvivo,recordemosquenoesposiblellamaralmtodostart()msdeunavez para un solo hilo.
2010 (3)
Prevenirlaejecucindeunhilo::
2009 (144)
Page 2 / 7
:Hilo Durmiendo (sleeping): Elmtodosleep()esunmtodoestticodelaclaseThread. Generalmente lo usamos en el cdigoparapausarunpocolaejecucindeunprocesoenparticularforzndoloadormir duranteuntiempodeterminado.Paraforzarunhiloadormirpodemosusaruncdigo parecido a lo siguiente: try{ Thread.sleep(5*60*1000); //Duerme durante 5 minutos }catch(InterruptedException ex){}
2008 (215) diciembre (14) noviembre (25) octubre (22) septiembre (5) agosto (14) julio (15) junio (9)
Normalmentecuandollamamosalmtodosleep()encerramoselcdigoenuntry/catch debidoaquedichomtodoarrojaunaexcepcin.
Elhechodequeunhilodejededormir,nosignificaquevolveraestarejecutndoseal momentodedespertar,eltiempoespecificadodentrodelmtodo sleep()eselmnimode tiempo que un hilo debe de dormir, aunque puede ser mayor. De igual manera se debe de tomarencuentaqueelmtodosleep()esesttico,esdecir,solohayunoparatodalaclase Thread,porlotanto,unhilonopuedeponeradormiraotro,elmtodosleep()siempre SIEMPRE afecta al hilo que se encuentra ejecutando al momento de hacer la llamada.
marzo (13) febrero (19) enero (35) Mi experiencia con Dell Habilidad Policiaca
:Prioridadesdehiloyelmtodoyield(): Paraentenderelmtodoyield(), debemos entender las prioridades de los hilos. Un hilo siempre corre con una prioridad, normalmente va de 1 a 10, debido a esto, el programador de hilosgeneralmenteutilizasuprogramacinbasadaenprioridades.Unhilodemenorprioridad queseencuentraejecutandousualmenteserdesplazadoalestadoenejecucinparaque un hilo de mayor prioridad pueda ejecutarse. De cualquier manera, nunca debes de basar el funcionamientodetuaplicacinbasadoenlasprioridadesdeloshilos. Para establecer la prioridad de un hilo debemos hacer algo parecido a lo siguiente: HiloRunnable h = new HiloRunnable(); Thread t = new Thread(h); t.setPriority(7); t.start();
Yotenaunlindocelular... Sitmeolvidas. Magia sorprendente! SobrecargademtodosenJava(Overloading) Aplicaciones y juegos Symbian S60 v3 Batman Vs Depredador Vs Alien Evitaservctimadeunfraude ElvideodeRenNezydeAlfredo Castellanos Ca... SobrescriturademtodosenJava(Overriding) Terminar Super Mario Bros en 5 minutos!
Algunasmquinasvirtualesnosoncapacesdereconocer10valoresdiferentesdeprioridad, loquecausaunproblemaalmomentodelaejecucin,debidoaello,laclaseThreadtiene3 constantes(variablesestticasyfinales)quedefinenunrangodeprioridadesdehilo: + Thread.MIN_PRIORITY (1) + Thread.NORM_PRIORITY (5) + Thread.MAX_PRIORITY (10) :Elmtodoyield(): Elmtodoyield()tienelafuncindehacerqueunhiloqueseestejecutandoderegresoal estado en ejecucin(runnable) para permitir que otros hilos de la misma prioridad puedan ejecutarse.Sinembargo,elfuncionamientodeestemtodo(aligualquedeloshilosen general)noestgarantizado,puedequedespusdequeseestablezcaunhilopormediodel mtodoyield() a s u e s t a d o e n ejecucin(runnable),stevuelvaaserelegidopara ejecutarse.Elmtodo y i e l d ( ) n u n c a c a u s a r q u e u n h i l o p a s e a e s t a d o d e espera/bloqueado/dormido, simplemente pasa de ejecutndose(running)a e n ejecucin (runnable). :Elmtodojoin():
Polimorfismo Encapsulamiento en Java Elpjaromslistodelmundo! Elperromsinteligentedelmundo... Convertir archivos de audio y video a diferentes f... Los tipos enumerados (enums) en Java Clases en Java parte 2 Clases e interfaces en Java La Miss Teen USA Carolina del Sur Soneto XXV LosgringosNOsonestpidos.Os??? Mensaje de Glenn Beck al presidente Felipe Caldero... Clases internas en Java(Inner/nested classes)
Elmtodonoestticojoin() permite al hilo "formarse en la cola de espera" de otro hilo. Si tienes un hilo B que no puede comenzar a ejecutarse hasta que se complete el proceso del hiloA,entoncesquerrsqueBseformeenlacoladeesperadeA.EstosignificaqueBnunca podrejecutarsesiAnocompletasuproceso.Encdigoseutilizaas:
Generated with www.html-to-pdf.net
Page 3 / 7
Thread t = new Thread(); t.start(); t.join(); Existeunaversinsobrecargadadejoin() que puede incluir el tiempo en milisegundos, por ejemplo si llamamos a t.join(5000), significa que el hilo que queremos ejecutar debe esperar aqueelhiloqueseestejecutandoenestemomentotermine,perositardamsde5 segundosentoncesdebedejardeesperaryentrarenestadodeejecucin(runnable).
VideodelnioquelloraporlosPumas Hilos en Java(Threads) parte 3 Los borrachos que dan risa... Video del Chacarron Sinaloense Al querer instalar Windows XP no se detecta el dis...
Hastaaquledejamosconlaterceraparte... MssobreprogramacinenJavaaqu.
Imprimir / Exportar a PDF Puedescompartirelartculocon:
Like 11 people like this. Sign Up to see what your friends like.
LINKS
Segui @Monillo007 Ahora Mis Ojos Te Ven LinuxMan
Tweet
Annoencuentrasloquebuscas?ContinabuscandoenGoogle: Buscar
15 comentarios:
Annimo 21 de octubre de 2008 00:12 jejeje shida la informacion me gusto y me aclaro la duda que tenia acerca de los estado del hilo... gracias
Annimo 1 de marzo de 2009 12:46 es un excelente explicacion sobre Thread, les agradezco.
Ya'akov 22 de marzo de 2010 11:30 Conceptos claros y muy entendibles. Gracias por el post.
Page 4 / 7
Alex 11 de diciembre de 2010 21:57 Es una copia tel tema de Threads del libro SCJP6 de Mcgraw hill
Annimo 2 de febrero de 2011 10:40 Muchas gracias por la info, excelente blog
Annimo 30 de agosto de 2011 15:07 Hola quisiera que me ayudes!!! la verdad soy novata en java y pues no se como solucionar mi problemita!!! Mira estoy trabajando con formularios y quiero hacer una pausa a la hora de mostrar el resultado por medio de un thread Sleep(la sintaxis esta correcta), el detalle esta en que la pausa la hace antes de mostrar el resultado y no despues despues como yo quiero y la verdad no se en que consiste. Soy Mary, te envie un correo hace un rato espero que puedas ayudarme lo mas pronto posible, mil gracias private void jTxtNominaLaboralKeyReleased(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == 10) { //En esta parte valido que mi caja de texto no este vacia y que solo se introduscan numeros if ((jTxtNominaLaboral.getText().length() == 0) || (!isNumeric(jTxtNominaLaboral.getText()))) { JOptionPane.showMessageDialog(null,"Introducetunmerodenomina") jTxtNominaLaboral.setText(""); jTxtNominaLaboral.requestFocusInWindow(); } else { //Aqui estan algunas instrucciones try { //En esta linea me hace la pausa y qui no debe ser c.num_nomina = (Integer.parseInt(jTxtNominaLaboral.getText())); jTxtNominaLaboral.setText(""); jTxtNominaLaboral.requestFocusInWindow(); c.inserta_registro(); //Aqui en esta linea es donde quiero que se haga una pausa a la hora de mostrar el resultado en la caja de texto y despues que la limpie jTxterrorLaboral.setText(String.valueOf(c.persona)); try { Thread.sleep(2000); } catch (InterruptedException ie) { System.out.println(ie.getMessage()); } jTxterrorLaboral.setText(""); } catch (Exception ex) { ex.printStackTrace(); } } } }
No tengo ni la menor idea de como hacerle para que la pausa la haga despues, ya le movi ya le hice y deshice pero nada!!!!
Page 5 / 7
JosCceres 14 de noviembre de 2012 21:29 Jajajaj totalmente de acuerdo con Alberto, ese pajarraco azul molesta y bastante, en fin, muchas gracias, heestadoleyendotusdemspostsacercadehilosymehanservidomucho.
Jav 26 de octubre de 2013 18:05 MUY BIEN EXPLICADO... MUCHAS GRACIAS, ME SACASTE DE MUCHAS DUDAS... EXITO!
Publicar un comentario
Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos: 1.- Loqueescribasestrelacionado con el post, si gustas contactarme puedes hacerlo aqui. 2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario. 3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas. 4.- Loscomentariossonunaformadediscusinabierta,porloquealpublicaruno,implcitamente entrasaunadiscusin,contodoloqueestorepresenta. 5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente. Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.
Entradamsreciente
Suscribirse a: Comentarios de la entrada (Atom)
Entrada antigua
Page 6 / 7
ENTRADAS
El contenido de este blog se rige bajo la licencia de AtribucinCreativeCommons2.5 Puedes copiar, distribuir, modificar y compartir pblicamentelosartculosdeesteblog, siempreycuandohagasmencinalafuente (osea nosotros) y pongas un enlace completo al post original.
ESTADSTICAS
Page 7 / 7