Threads en Java http://www.javasonicos.com/2008/10/15/threads-en-java/
He estado pensando como codificar el código 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ínea
public class ClaseThread extends Thread
En C# esto no es posible, mi clase principal no puede heredar de Thread lo que sería algo como esto
class ClaseThread : System.Threading.Thread
Por lo que mi clase principal no tiene ningun método que le permita hacer hilos obligándome a instanciar la clase y luego pasar todo el objeto a un nuevo objeto hilo
El código de Javasonicos fue:
public class ClaseThread extends Thread {
public ClaseThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i <
10; i++) {
System.out.println(i + ” ” + getName());
}
System.out.println(“Termina
El Hilo Numero ” + getName());
}
public static void main(String[] args) {
new ClaseThread(“1”).start();
new ClaseThread(“2”).start();
}
}
Mi código:
using System;
using System.Threading;
class ClaseThread
{
String getName;
public ClaseThread(String str) {
getName = str;
}
public void run() {
for (int i = 0; i < 10;
i++) {
System.Console.WriteLine (i + ” ” + getName);
}
System.Console.WriteLine
(“Termina El Hilo Numero (“+ getName +”) “);
}
public static void Main(string[]
args)
{
ClaseThread
objeto1 = new ClaseThread(“Hilo 1”);
ClaseThread
objeto2 = new ClaseThread(“Hilo 2”);
Thread hilo1 =
new Thread(new ThreadStart(objeto1.run));
Thread hilo2 =
new Thread(new ThreadStart(objeto2.run));
hilo1.Start();
hilo2.Start();
}
}
Se espera la salida de este programa como:
0 Hilo 1
0 Hilo 2
1 Hilo 2
2 Hilo 2
3 Hilo 2
4 Hilo 2
5 Hilo 2
6 Hilo 2
7 Hilo 2
8 Hilo 2
9 Hilo 2
Termina El Hilo Numero (Hilo 2)
1 Hilo 1
2 Hilo 1
3 Hilo 1
4 Hilo 1
5 Hilo 1
6 Hilo 1
7 Hilo 1
8 Hilo 1
9 Hilo 1
Termina El Hilo Numero (Hilo 1)
Debido a cómo funciona C# el código puede ser reducido, pero pierde mucho mas perecido al código original de JavaSonicos
using System;
using System.Threading;
class ClaseThread
{
public void run() {
for (int i = 0; i < 10;
i++) {
System.Console.WriteLine (i);
}
System.Console.WriteLine
(“Termina El Hilo”);
}
public static void Main(string[]
args)
{
ClaseThread
objeto = new ClaseThread();
Thread hilo1 =
new Thread(new ThreadStart(objeto.run));
Thread hilo2 =
new Thread(new ThreadStart(objeto.run));
hilo1.Start();
hilo2.Start();
}
}