Ejercicio 1:
package unidad2;
import java.util.Scanner;
// Clase que ejecutará el código del hilo
class SucesionFibonacci implements Runnable {
// Como se le va a pasar un valor al hijo esta clase necesia un atributo para guardar y
usar dicho valor
private int iteraciones;
// Para guardar el atributo que se le va a pasar se declara un constructor
public SucesionFibonacci (int iteraciones) {
this.iteraciones = iteraciones;
}
// Código principal del hilo
public void run(){
System.out.println(Thread.currentThread().getName());
int fib1 = 0;
int fib2 = 1;
int suma = fib1 + fib2;
System.out.print(fib1);
for(int i=1; i<iteraciones; i++) {
System.out.print(" "+ suma);
suma = fib1 + fib2;
fib1 = fib2;
fib2 = suma;
}
}
}
public class Ejercicio1 {
public static void main(String args[]) {
System.out.println("Introduce cuántos números de la serie de Fibonnaci
quieres ver.");
Scanner sc = new Scanner(System.in);
int iteraciones;
do {
System.out.print("¿Cuántos? ");
iteraciones = sc.nextInt();
if(iteraciones < 1)
System.out.println("¿Pero qué haces? No pueden mostrarse
menos de uno.");
} while (iteraciones < 1);
sc.close();
SucesionFibonacci fibonacci = new SucesionFibonacci(iteraciones);
Thread miFibonacci = new Thread(fibonacci);
miFibonacci.setName("Fibonacci "+ iteraciones +" iteraciones");
miFibonacci.start();
}
}
Ejercicio 2
package unidad2;
import java.util.Scanner;
class HiloEjercicio2 extends Thread {
@Override
public void run() {
System.out.println("Soy el "+ Thread.currentThread().getName() +"
empezando.");
System.out.println(Thread.currentThread().getName() +" acabado.");
}
}
public class Ejercicio2 {
public static void main(String args[]) {
System.out.println("Introduce cuántos hilos se van a crear de 1 a 10.");
Scanner sc = new Scanner(System.in);
int hilos;
do {
System.out.print("¿Cuántos? ");
hilos = sc.nextInt();
if(hilos < 1 || hilos >10)
System.out.println("¿Pero qué haces? Entre 1 y 10.");
} while (hilos < 1 || hilos >10);
sc.close();
for(int i=1; i<=hilos; i++)
{
HiloEjercicio2 hilo = new HiloEjercicio2();
hilo.setName("hilo "+ i);
hilo.start();
}
}
}
Ejercicio 3
package unidad2;
class HiloEjercicio3 extends Thread {
@Override
public void run() {
System.out.println("Soy el hilo creado que está empezando.");
try {
System.out.println("Voy a esperar 3 segundos.");
Thread.sleep(3000);
} catch (InterruptedException e) {
System.out.println("Hilo creado interrumpido.");
return;
}
System.out.println("Soy el hilo creado que va a acabar.");
}
}
public class Ejercicio3 {
public static void main(String args[]) {
HiloEjercicio3 hilo = new HiloEjercicio3();
hilo.start();
}
}
Ejercicio 4
package unidad2;
class Hiloejercicio4 extends Thread {
private long espera;
public Hiloejercicio4 (long espera) {
this.espera = espera;
}
public void run() {
String nombreHilo = Thread.currentThread().getName();
System.out.println("Soy el "+ nombreHilo +" empezando. Y voy a esperar "+
espera/1000 +" segundos.");
try {
Thread.sleep(espera);
} catch (InterruptedException e) {
System.out.println(nombreHilo +" interrumpido");
return;
}
System.out.println(nombreHilo +" acabando.");
}
}
public class Ejercicio4 {
public static void main(String[] args) {
System.out.println("Hilo PRINCIPAL empezando.");
Hiloejercicio4 thread1 = new Hiloejercicio4(3000);
thread1.setName("Hilo 1");
Hiloejercicio4 thread2 = new Hiloejercicio4(5000);
thread2.setName("Hilo 2");
thread1.start();
thread2.start();
System.out.println("Soy el hilo PRINCIPAL y voy a esperarme 4 segundos.");
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
System.out.println("Hilo PRINCIPAL interrumpido");
return;
}
System.out.println("Hilo PRINCIPAL acabando.");
}
}
Ejercicio 5
package unidad2;
class Hiloejercicio5 extends Thread {
private long espera;
public Hiloejercicio5 (long espera) {
this.espera = espera;
}
public void run() {
String nombreHilo = Thread.currentThread().getName();
System.out.println("Soy el "+ nombreHilo +" empezando. Y voy a esperar "+
espera/1000 +" segundos.");
try {
Thread.sleep(espera);
} catch (InterruptedException e) {
System.out.println(nombreHilo +" interrumpido");
return;
}
System.out.println(nombreHilo +" acabando.");
}
}
public class Ejercicio5 {
public static void main(String[] args) {
System.out.println("Hilo PRINCIPAL empezando.");
Hiloejercicio5 thread1 = new Hiloejercicio5(3000);
thread1.setName("Hilo 1");
Hiloejercicio5 thread2 = new Hiloejercicio5(5000);
thread2.setName("Hilo 2");
thread1.start();
thread2.start();
System.out.println("Soy el hilo PRINCIPAL y voy a esperarme a que mis hijos
acaben.");
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
System.out.println("Hilo PRINCIPAL interrumpido");
return;
}
System.out.println("Hilo PRINCIPAL acabando.");
}
}
Ejercicio 6
package unidad2;
class HiloEjercicio6 extends Thread {
private long espera;
public HiloEjercicio6 (long espera) {
this.espera = espera;
}
public void run() {
String nombreHilo = Thread.currentThread().getName();
System.out.println("Soy el "+ nombreHilo +" empezando. Y voy a esperar "+
espera/1000 +" segundos.");
try {
Thread.sleep(espera);
} catch (InterruptedException e) {
System.out.println(nombreHilo +" interrumpido");
return;
}
System.out.println(nombreHilo +" acabando.");
}
}
public class Ejercicio6 {
public static void main(String[] args) {
System.out.println("Hilo PRINCIPAL empezando.");
HiloEjercicio6 thread1 = new HiloEjercicio6(5000);
thread1.setName("Hilo 1");
HiloEjercicio6 thread2 = new HiloEjercicio6(7000);
thread2.setName("Hilo 2");
HiloEjercicio6 threadDaemon = new HiloEjercicio6(12000);
threadDaemon.setName("Hilo Daemon");
thread1.start();
thread2.start();
threadDaemon.setDaemon(true);
threadDaemon.start();
System.out.println("Soy el hilo PRINCIPAL y voy a esperarme 4 segundos.");
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
System.out.println("Hilo PRINCIPAL interrumpido");
return;
}
System.out.println("Hilo PRINCIPAL acabando.");
}
}
Ejercicio 7
package unidad2;
class HiloEjercicio7 extends Thread {
public void run() {
System.out.println("Soy el "+ Thread.currentThread().getName() +"
empezando.");
for(int i=0; i<10; i++)
System.out.println("Soy el "+ Thread.currentThread().getName() +" iteración "+ i);
System.out.println("Soy el "+ Thread.currentThread().getName() +"
acabando.");
}
}
public class Ejercicio7 {
public static void main(String[] args) {
HiloEjercicio7 thread1 = new HiloEjercicio7();
thread1.setName("Hilo 1");
thread1.setPriority(1);
HiloEjercicio7 thread2 = new HiloEjercicio7();
thread2.setName("Hilo 2");
thread2.setPriority(Thread.MAX_PRIORITY);
thread1.start();
thread2.start();
}
}
Ejercicio 8
package unidad2;
public class Ejercicio8 extends Thread{
private int hilosHijos;
public Ejercicio8 (int hilosHijos) {
this.hilosHijos = hilosHijos;
}
public void run() {
this.currentThread().setName("Hilo "+ hilosHijos);
String nombreHilo = Thread.currentThread().getName();
String tabulado = "";
for(int i=1; i<hilosHijos; i++)
tabulado += " ";
if(hilosHijos!=10) {
System.out.println(tabulado +"Soy el "+ nombreHilo +" creo un hijo y
espero que acabe.");
hilosHijos++;
Ejercicio8 hilo = new Ejercicio8(hilosHijos);
hilo.start();
try {
hilo.join();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
System.out.println(tabulado +"Soy el "+ nombreHilo +" acabando.");
} else {
System.out.println(tabulado +"Soy el "+ nombreHilo +" y me espero 5
segundos.");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
public static void main(String[] args) {
new Ejercicio8(1).start();
}
}