elias86
13-10-2006, 14:55
Ciao a tutti.
C'è questo bel progettino da consegnare entro lunedi alle 19... e faccio fatica a fare operazioni basilari come: far comunicare tutti i thread "avventore" con il "cameriere", impostare i tempi richiesti ecc.
vi allego il testo del progetto, sperando che qualche buona anima abbia voglia di darmi una mano!
grazie in anticipo a chiunque mi saprà dare una mano, Elias
ps:
per ora NON mi funziona questo:
In pratica stò cercando di inviare al Cameriere, le richieste di 5 Avventori (la richiesta è sotto forma di Stringa) che viene inviata al Cameriere. Il cameriere deve gestire una coda di richieste. Per maggiori info vedere l'allegato (TESTO COMPLETO).
class Main {
public static void main(String[]args) {
String m1 = "O sole mio";
String m2 = "Sucastaminchia!";
String m3 = "Bad";
String m4 = "Drop the bombshell";
String m5 = "Just be";
String wait = "wait";
Cameriere cam = new Cameriere("wait");
Avventore av1 = new Avventore(m1);
Avventore av2 = new Avventore(m2);
Avventore av3 = new Avventore(m3);
Avventore av4 = new Avventore(m4);
Avventore av5 = new Avventore(m5);
av1.start();
av2.start();
av3.start();
av4.start();
av5.start();
cam.start();
}
}
public class Cameriere extends Thread{
String canzone;
public Cameriere(String canz) {
canzone = canz.toString();
}
public String receive() {
String ricevuta;
synchronized(canzone) {
if(canzone == null)
ricevuta = null;
else
ricevuta = canzone.toString();
}
return ricevuta;
}
public void run(){
String ricevuta;
while(!isInterrupted()) {
if((ricevuta = receive()) == null) {
try {
sleep(1000);
}
catch(InterruptedException e){
return;
}
}
System.out.println("\nCAMERIERE - canzone ricevuta: "+ricevuta);
}
}
}
public class Avventore extends Thread{
String canzone;
public Avventore(String canz) {
canzone = canz.toString();
}
public void transmit(String canz) {
synchronized(canzone){
canzone = canz.toString();
}
}
public void run(){
int sleepTime = 50;
System.out.println("\nAVVENTORE - canzone scelta: "+canzone);
try {
if(!isInterrupted()) {
sleep(1000);
transmit(canzone);
if(isInterrupted())
return;
sleep(sleepTime*3);
}
} catch(InterruptedException e){}
System.out.println("\nAVVENTORE - canzone inviata: "+canzone);
}
}
:mc: :muro:
C'è questo bel progettino da consegnare entro lunedi alle 19... e faccio fatica a fare operazioni basilari come: far comunicare tutti i thread "avventore" con il "cameriere", impostare i tempi richiesti ecc.
vi allego il testo del progetto, sperando che qualche buona anima abbia voglia di darmi una mano!
grazie in anticipo a chiunque mi saprà dare una mano, Elias
ps:
per ora NON mi funziona questo:
In pratica stò cercando di inviare al Cameriere, le richieste di 5 Avventori (la richiesta è sotto forma di Stringa) che viene inviata al Cameriere. Il cameriere deve gestire una coda di richieste. Per maggiori info vedere l'allegato (TESTO COMPLETO).
class Main {
public static void main(String[]args) {
String m1 = "O sole mio";
String m2 = "Sucastaminchia!";
String m3 = "Bad";
String m4 = "Drop the bombshell";
String m5 = "Just be";
String wait = "wait";
Cameriere cam = new Cameriere("wait");
Avventore av1 = new Avventore(m1);
Avventore av2 = new Avventore(m2);
Avventore av3 = new Avventore(m3);
Avventore av4 = new Avventore(m4);
Avventore av5 = new Avventore(m5);
av1.start();
av2.start();
av3.start();
av4.start();
av5.start();
cam.start();
}
}
public class Cameriere extends Thread{
String canzone;
public Cameriere(String canz) {
canzone = canz.toString();
}
public String receive() {
String ricevuta;
synchronized(canzone) {
if(canzone == null)
ricevuta = null;
else
ricevuta = canzone.toString();
}
return ricevuta;
}
public void run(){
String ricevuta;
while(!isInterrupted()) {
if((ricevuta = receive()) == null) {
try {
sleep(1000);
}
catch(InterruptedException e){
return;
}
}
System.out.println("\nCAMERIERE - canzone ricevuta: "+ricevuta);
}
}
}
public class Avventore extends Thread{
String canzone;
public Avventore(String canz) {
canzone = canz.toString();
}
public void transmit(String canz) {
synchronized(canzone){
canzone = canz.toString();
}
}
public void run(){
int sleepTime = 50;
System.out.println("\nAVVENTORE - canzone scelta: "+canzone);
try {
if(!isInterrupted()) {
sleep(1000);
transmit(canzone);
if(isInterrupted())
return;
sleep(sleepTime*3);
}
} catch(InterruptedException e){}
System.out.println("\nAVVENTORE - canzone inviata: "+canzone);
}
}
:mc: :muro: