Download REPORTE DE LA PRACTICA NO 1

Document related concepts
no text concepts found
Transcript
REPORTE DE LA PRACTICA NO 1
1.-LAS TABLAS DE MULTIPLICAR (numero.java).
OBJETIVO: recordatorio sobre las nociones básicas de las instrucciones básicas de java.
import java.io.*;
import java.util.*;
public class numero
{
public static void main(String []args)
{
int a;
int b;
a = leer();
System.out.println ("\nLa Tabla del "+a+"es:\n");
for(int i=0;i<11;i++)
{
b=a*i;
System.out.println (+a+" x "+i+" = "+b+"\n");
}
}
//funcion que lee desde el buffer
public static int leer()
{
String primero, segundo;
int p=0;
InputStreamReader bv = new InputStreamReader(System.in);
BufferedReader lec = new BufferedReader(bv);
try{
System.out.println("Ingresa el numero");
primero = lec.readLine();
p = Integer.parseInt(primero);
} catch(IOException e){}
return (p);
}
}
CORRIDA:
COMENTARIO: Básicamente se trata de utilizar los metodos de la clase io para la entrada/salida de
los caracteres con la ayuda de la utilización del BufferReader para la lectura de los caracteres y
simples métodos de escritura el println().
CONCLUSIÓN: Básicamente se trata de utilizar los metodos de la clase io para la entrada/salida de
los caracteres con la ayuda de la utilización del BufferReader para la lectura de los caracteres y
simples métodos de escritura el println().
2.- EDITOR SENCILLO (TinyEdit.java).
OBJETIVO: Recordar las instrucciones en java para manejar cadenas en el lenguaje java
CODIGO FUENTE:
import java.io.*;
class TinyEdit
{
public static void main(String args[]) throws IOException
{
DataInputStream inData = new DataInputStream(System.in);
String str[] = new String[100];
System.out.println("INTRODUSCA LINEAS DE TEXTO");
System.out.println("Introdusca fin para finalizar...");
for(int i=0;i<100;i++)
{
str[i] = inData.readLine();
if(str[i].equals("Fin"))
break;
System.out.println(str[i]);
}
}
}
CORRIDA:
COMENTARIO: Un buen ejemplo para poder recordar las intrucciones para la lectura/escritura de
cadenas.
CONCLUSION: el programa ayudo a recordar instrucciones basicas como el inputStream, la
comparación de cadenas y signos.
3.- ThreadConHerencia
Objetivo.
Esta practica tiene como objetivo mostrarnos como crear dos hilos por medio del metodo de
herencia, Tambien nos servira para observar de que manera se ejecutan estos hilos
Codigo Fuente
class ThreadConHerencia extends Thread
{
String palabra;
public ThreadConHerencia (String _palabra)
{
palabra = _palabra;
}
public void run()
{
for(int i=0;i<10;i++)
System.out.print(palabra);
}
public static void main(String[] args)
{
Thread a = new ThreadConHerencia("hiloUno");
Thread b = new ThreadConHerencia("hiloDos");
a.start();
b.start();
System.out.print("Fin del hilo principal");
}
}
Comentario del equipo
Esta manera de crear hilos es de una manera muy familiar para nosotros ya que se usan conceptos
ya conocidos como es la herencia. La manera o prioridad en que se ejecutan los hilos nunca es la
misma tiende a ser diferente.
Conclusión
La creación de hilos por medio de la herencia resulta ser algo ya conocido. Usando clases y el
concepto de herencia, el programa es sencillo lo que permite ver perfectamente que estos hilos
creados nunca se ejecutaran de una manera en especifico sino que tiende a cambiar.
4.- ThrreadConRunnable
Objetivo.
Este programa tiene como objetivo mostrarnos el metodo de crear hilos por medio del concepto.
Runnable.
Codigo Fuente
class ThreadConRunnable extends Thread
{
String palabra;
public ThreadConRunnable (String _palabra)
{
palabra = _palabra;
}
public void run()
{
for(int i=0;i<10;i++)
System.out.print(palabra);
}
public static void main(String args[])
{
ThreadConRunnable a = new ThreadConRunnable("hiloUno");
ThreadConRunnable b = new ThreadConRunnable("hiloDos");
Thread t1 = new Thread(a);
Thread t2 = new Thread(b);
t1.start();
t2.start();
System.out.print("Fin del programa principal");
}
}
Comentarios del equipo.
Este programa hace lo mismo que el anterior la unica diferencia que hay es la manera en que los
hilos se ejecutan, al igual que con el metodo de herencia. Los hilos nunca se ejecutan de la misma
manera.
Conclusión
El metodo para crear hilos por medio del concepto ruunable no varia mucho al de herencia. A pesar
de ser un metodo diferente la ejecución de dichos hilos es la misma o sea que nunca se ejecutan de
una manera igual u ordenada.
5.-PrintTest
Objetivo.
El objetivo de esta practica es mostrarnos algunas propiedades de la clase thread en este case la de
sleep y como implementarlas al usar hilos en java.
Codigo Fuente
public class PrintTest
{
public static void main(String args[])
{
PrintThread thread1, thread2, thread3, thread4;
thread1=new PrintThread("1");
thread2=new PrintThread("2");
thread3=new PrintThread("3");
thread4=new PrintThread("4");
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}
class PrintThread extends Thread
{
int sleepTime;
public PrintThread(String id)
{
super (id);
sleepTime=(int)(Math.random()*5000 );
System.out.println("nombre: "+getName()+"; dormira:"+sleepTime);
}
public void run()
{
try
{
sleep(sleepTime);
}
catch(InterruptedException exception)
{
System.err.println("excepcion: "+exception.toString());
}
System.out.println("Hilo que duerme menos: "+getName()+"
milisegundos ");
}
}
"+sleepTime+"
Comentarios del equipo
Esta propiedad del thread es algo ya conocido antes por nosotros y algo nuevo al implementarlo
con hilos. Al igual que en ejemplos anteriores los hilos nunca se ejecutan de una manera igual.
Conclusión
Este metodo de crear hilos llamado por herencia nos permite el uso de varias propiedades de la
clase Thread lo cual nos es muy util.
6.- PrintTestRunnable
Objetivo
Este programa tiene como objetivo mostrarnos como al crear los hilos por medio del concepto
runnable podemos usar metodos de la clase thread ya que los hilos al no ser creados por herencia
estos metodos no pueden ser usados de una manera muy directa
Codigo Fuente
class PrintThread implements Runnable
{
int sleepTime;
String nombre;
public PrintThread(String id)
{
nombre = id;
sleepTime=(int)(Math.random()*5000 );
System.out.println("nombre: "+ nombre +"; dormira:"+sleepTime);
}
public void run()
{
try
{
Thread.sleep(sleepTime);
}
catch(InterruptedException exception)
{
System.err.println("excepcion: "+exception.toString());
}
System.out.println("Hilo que duerme menos: "+ nombre+" "+sleepTime+"
milisegundos ");
}
}
public class PrintTestR
{
public static void main(String args[])
{
// creamos los objetos de la clase PrintThread
PrintThread a = new PrintThread("1");
PrintThread b = new PrintThread("2");
PrintThread c = new PrintThread("3");
PrintThread d = new PrintThread("4");
// crear hilos
Thread t1 = new Thread(a);
Thread t2 = new Thread(b);
Thread t3 = new Thread(c);
Thread t4 = new Thread(d);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
Comentarios del equipo
El resultado de la ejecución es la misma, pero no la manera en que se crean los hilos ni la manera en
que se usa el sleep.
Conclusión
A diferencia de crear los hilos con el metodo de herencia aquí no se puede usar el sleep de una
manera tan directa como el programa anterior, requiere de ciertas modificacioes
7.- AHerencia
Objetivo
El objetivo de este programa es enseñernos el uso del priority que sirve para darle prioridad a un
hilo.
Codigo Fuente
public class AHerencia extends Thread
{
public AHerencia(String _palabra)
{
super(_palabra);
}
public void run()
{
for(int i=0;i<100;i++)
System.out.println(getName());
}
public static void main(String args[])
{
Thread t1 = new AHerencia("a1");
Thread t2 = new AHerencia("a2");
t1.start();
t1.setPriority(1);
System.out.println("Prioridad de t1: " + t1.getPriority());
t2.start();
System.out.println("Prioridad de t2: " + t2.getPriority());
}
}
Comentarios del equipo.
El setPriority podria sernos de mucha ayuda en un futuro para la ejecución de nuestros programas
con hilos.
Conclusión
Es muy util poder manipular la prioridad de ejecución de un hilo en un programa y la manera de
implementarlos tambien es muy sencilla.
8.- A
Objetivo
El objetivo de este programa es enseñernos el uso del priority que sirve para darle prioridad a un
hilo.
Codigo Fuente
public class A implements Runnable
{
String palabra;
public A(String _palabra)
{
palabra = _palabra;
}
public void run()
{
for(int i=0;i<100;i++)
System.out.println(palabra);
}
public static void main(String args[])
{
A a1 = new A("a1");
A a2 = new A("a2");
Thread t1 = new Thread(a1);
Thread t2 = new Thread(a2);
t1.start();
t1.setPriority(1);
System.out.println("Prioridad de t1: " + t1.getPriority());
t2.start();
System.out.println("Prioridad de t2: " + t2.getPriority());
}
}
Comentarios del equipo.
El setPriority podría sernos de mucha ayuda en un futuro para la ejecución de nuestros programas
con hilos.
Conclusión
Es muy útil poder manipular la prioridad de ejecución de un hilo en un programa y la manera de
implementarlos también es muy sencilla.
9.- AutoThread
Objetivo
El objetivo de este programa es enseñarnos el uso del priority que sirve para darle prioridad a un
hilo.
Código Fuente
import java.io.*;
class AutoThread implements Runnable
{
private Thread me_;
public AutoThread()
{
me_ = new Thread(this);
me_.start();
}
public void run()
{
if (me_==Thread.currentThread())
for (int i=0;i<10;i++)
System.out.println ("Dentro de Autothread.run()");
}
public static void main(String[] args)
{
AutoThread miThread = new AutoThread();
for (int i = 0;i<10;i++)
System.out.println ("Dentro de main()");
}
}
CORRIDA:
COMENTARIO DEL EQUIPO
No se implementa el hilo dentro del main.
CONCLUSIÓN
Al construir un objeto éste se ejecuta automáticamente en un nuevo hilo. Para ello, en el constructor
creamos el hilo y lo lanzamos.
10.- AutoThreadConHerencia
Objetivo
El objetivo de este programa es enseñarnos el uso del priority que sirve para darle prioridad a un
hilo.
Código Fuente
import java.io.*;
class AutoThreadConHerencia extends Thread
{
private Thread me_;
public AutoThreadConHerencia()
{
me_ = new AutoThreadConHerencia();
me_.start();
}
public void run()
{
if (me_==Thread.currentThread())
for (int i=0;i<10;i++)
System.out.println ("Dentro de Autothread.run()");
}
public static void main(String[] args)
{
AutoThread miThread = new AutoThread();
for (int i = 0;i<10;i++)
System.out.println ("Dentro de main()");
}
}
CORRIDA:
COMENTARIO DEL EQUIPO
Básicamente el codigo cambia al implementarlo con el metodo Thread ya que es llamado heredando
sus caracteristicas.
CONCLUSIÓN
Con la herencia del método run() hay que controlar quién es el hilo que se está ejecutando.
Para ello nos servimos del método currentThread() de la clase Thread. Este método nos
devuelve una referencia al hilo que está ejecutando ese código.