Está en la página 1de 6

Alumno: Carlos Alonso Guevara Medina

Ejercicio 1
package appherencia;

/**
*
* @author Carlos Alonso
*/
public class Appherencia {

/**
* @param args the command line arguments
*/
public static void main(java.lang.String[] args) {
HiloHerencia hilo1;
HiloHerencia hilo2;

hilo1=new HiloHerencia("liebre",33);
hilo2=new HiloHerencia("tortuga",100);

hilo1.start();
hilo2.start();
}

package appherencia;

/**
*
* @author Carlos Alonso
*/
class HiloHerencia extends Thread {
String palabra;
long pausa;
public HiloHerencia(String queDecir,long tiempoPausa){
palabra=queDecir;
pausa=tiempoPausa;
}
public void run(){
try{
for(int i=0;i<100;i++){
System.out.println(palabra+"");
Thread.sleep(pausa);
}
}
catch
(InterruptedException e) {
}
}

}
Alumno: Carlos Alonso Guevara Medina

Ejercicio 2

package sinsemaforos;

/**
*
* @author Carlos Alonso
*/
public class SinSemaforos {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
(new Thread(new p1())).start();
(new Thread(new p2())).start();
(new Thread(new p3())).start();
(new Thread(new p4())).start();
}

class p1 extends Thread {


public void run(){
try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P1");
}
Alumno: Carlos Alonso Guevara Medina
class p2 extends Thread{

public void run(){


try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedExceptione) {
e.printStackTrace();
}
System.out.println("P2");
}

class p3 extends Thread{

public void run(){


try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P3");
}

class p4 extends Thread{

public void run(){


try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P4");
}

}
Alumno: Carlos Alonso Guevara Medina

Ejercicio 3

package consemaforo;

/**
*
* @author Carlos Alonso
*/
import java.util.concurrent.Semaphore;

public class ConSemaforo {

/**
* @param args the command line arguments
*/
protected static Semaphore oFinP1, oFinP3;
public static void main(String[] args) {
oFinP1=new Semaphore(0, true);
oFinP3=new Semaphore(0,true);

(new Thread(new p1(oFinP1))).start();


(new Thread(new p2(oFinP1,oFinP3))).start();
(new Thread(new p3(oFinP3))).start();
(new Thread(new p4(oFinP1,oFinP3))).start();
}

class p1 extends Thread{


protected Semaphore oFinP1;
public p1(Semaphore oFinP1) {
this.oFinP1=oFinP1;
}

public void run(){


try {
Alumno: Carlos Alonso Guevara Medina
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P1");
this.oFinP1.release();
}

class p2 extends Thread {


protected Semaphore oFinP1;
protected Semaphore oFinP3;
public p2(Semaphore oFinP1, Semaphore oFinP3) {
this.oFinP3=oFinP3;
this.oFinP1=oFinP1;
}

public void run(){


try {
this.oFinP1.acquire();
this.oFinP3.acquire();
} catch (Exception e) {
e.printStackTrace();
}
try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("P2");
}
}

class p3 extends Thread {


protected Semaphore oFinP3;

public p3(Semaphore oFinP3) {


this.oFinP3=oFinP3;
}

public void run(){


try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P3");
this.oFinP3.release(2);
}

class p4 extends Thread {


protected Semaphore oFinP1;
Alumno: Carlos Alonso Guevara Medina
protected Semaphore oFinP3;
public p4(Semaphore oFinP1, Semaphore oFinP3) {
this.oFinP3=oFinP3;
this.oFinP1=oFinP1;
}
public void run(){
try {
this.oFinP1.acquire();
this.oFinP3.acquire();
} catch (Exception e) {
e.printStackTrace();
}
try {
sleep((int)Math.round(500*Math.random()-0.5));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("P4");
}

También podría gustarte