{"id":298,"date":"2008-10-18T21:33:50","date_gmt":"2008-10-19T03:33:50","guid":{"rendered":"http:\/\/www.lastdragon.net\/?p=298"},"modified":"2008-10-18T23:33:20","modified_gmt":"2008-10-19T05:33:20","slug":"threads-en-java-y-c","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=298","title":{"rendered":"Threads en Java y C#"},"content":{"rendered":"<p><a href=\"http:\/\/www.javasonicos.com\/2008\/10\/15\/threads-en-java\/\">Threads en Java http:\/\/www.javasonicos.com\/2008\/10\/15\/threads-en-java\/<\/a><\/p>\n<p>He estado pensando como codificar el c\u00f3digo que se ha puesto en Javasonicos sobre uso de Threads en Java, pues en C# se manejan algo diferente.<\/p>\n<p>En el de Java se instancian 2 objetos que ademas heredad su capacidad  de hilo de la clase Thread en la l\u00ednea <\/p>\n<p>public class ClaseThread extends Thread<\/p>\n<p>En C# esto no es posible, mi clase principal no puede heredar de Thread lo que ser\u00eda algo como esto <\/p>\n<p>class ClaseThread : System.Threading.Thread<\/p>\n<p>Por lo que mi clase principal no tiene ningun m\u00e9todo que le permita hacer hilos oblig\u00e1ndome a instanciar la clase y luego pasar todo el objeto a un nuevo objeto hilo<\/p>\n<p><strong>El c\u00f3digo de Javasonicos fue:<\/strong><\/p>\n<p>public class ClaseThread extends Thread {<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp; public ClaseThread(String str) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(str);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp; public void run() {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &amp;lt;<br \/>\n10; i++) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nSystem.out.println(i + &#8221; &#8221; + getName());<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&#8220;Termina<br \/>\nEl Hilo Numero &#8221; + getName());<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ClaseThread(&#8220;1&#8221;).start();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ClaseThread(&#8220;2&#8221;).start();<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n}<\/p>\n<p><strong>Mi c\u00f3digo:<\/strong><\/p>\n<p>using System;<br \/>\nusing System.Threading;<\/p>\n<p>\nclass ClaseThread <br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; String getName;<br \/>\n&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; public ClaseThread(String str) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; getName = str;<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; public void run() {<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 10;<br \/>\ni++) {<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br \/>\nSystem.Console.WriteLine (i + &#8221; &#8221; + getName);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine<br \/>\n(&#8220;Termina El Hilo Numero (&#8220;+ getName +&#8221;) &#8220;);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public static void Main(string[]<br \/>\nargs)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ClaseThread<br \/>\nobjeto1 = new ClaseThread(&#8220;Hilo 1&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ClaseThread<br \/>\nobjeto2 = new ClaseThread(&#8220;Hilo 2&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Thread hilo1 =<br \/>\nnew Thread(new ThreadStart(objeto1.run));<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Thread hilo2 =<br \/>\nnew Thread(new ThreadStart(objeto2.run));<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hilo1.Start();<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hilo2.Start();<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p><strong>Se espera la salida de este programa como:<\/strong><\/p>\n<p>0 Hilo 1<br \/>\n0 Hilo 2<br \/>\n1 Hilo 2<br \/>\n2 Hilo 2<br \/>\n3 Hilo 2<br \/>\n4 Hilo 2<br \/>\n5 Hilo 2<br \/>\n6 Hilo 2<br \/>\n7 Hilo 2<br \/>\n8 Hilo 2<br \/>\n9 Hilo 2<br \/>\nTermina El Hilo Numero (Hilo 2)<br \/>\n1 Hilo 1<br \/>\n2 Hilo 1<br \/>\n3 Hilo 1<br \/>\n4 Hilo 1<br \/>\n5 Hilo 1<br \/>\n6 Hilo 1<br \/>\n7 Hilo 1<br \/>\n8 Hilo 1<br \/>\n9 Hilo 1<br \/>\nTermina El Hilo Numero (Hilo 1)<\/p>\n<p><strong>Debido a c\u00f3mo funciona C# el c\u00f3digo puede ser reducido, pero pierde mucho mas perecido al c\u00f3digo original de JavaSonicos<\/strong><\/p>\n<p>using System;<br \/>\nusing System.Threading;<\/p>\n<p>\nclass ClaseThread <br \/>\n&nbsp;&nbsp; &nbsp;{<br \/>\n&nbsp;&nbsp; &nbsp;<\/p>\n<p>&nbsp;&nbsp; &nbsp;public void run() {<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 10;<br \/>\ni++) {<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;System.Console.WriteLine (i);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine<br \/>\n(&#8220;Termina El Hilo&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp; &nbsp;<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public static void Main(string[]<br \/>\nargs)<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;{<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ClaseThread<br \/>\nobjeto = new ClaseThread();<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Thread hilo1 =<br \/>\nnew Thread(new ThreadStart(objeto.run));<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Thread hilo2 =<br \/>\nnew Thread(new ThreadStart(objeto.run));<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;hilo1.Start();<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;hilo2.Start();<br \/>\n&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<\/p>\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br \/>\n&nbsp;&nbsp; &nbsp;}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Threads en Java http:\/\/www.javasonicos.com\/2008\/10\/15\/threads-en-java\/ He estado pensando como codificar el c\u00f3digo que se ha puesto en Javasonicos sobre uso de Threads en Java, pues en C# se manejan algo diferente. En el de Java se instancian 2 objetos que ademas heredad su capacidad de hilo de la clase Thread en la l\u00ednea public class ClaseThread&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-298","post","type-post","status-publish","format-standard","hentry","category-programacion"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=298"}],"version-history":[{"count":0,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/298\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}