correction scheduler et random delay dans canal)
This commit is contained in:
@@ -20,6 +20,10 @@ public class Afficheur implements ObserverdeCapteur {
|
|||||||
this.canalAsync = canal;
|
this.canalAsync = canal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setId(int id){
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
//AO1 - concrete servant
|
//AO1 - concrete servant
|
||||||
@Override
|
@Override
|
||||||
public void update(Capteur subject) {
|
public void update(Capteur subject) {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import interfaces.CapteurAsync;
|
|||||||
import interfaces.ObserverDeCapteurAsync;
|
import interfaces.ObserverDeCapteurAsync;
|
||||||
import interfaces.ObserverdeCapteur;
|
import interfaces.ObserverdeCapteur;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
||||||
private int delay=1000;
|
|
||||||
private Scheduler scheduler;
|
private Scheduler scheduler;
|
||||||
private ObserverdeCapteur afficher;
|
private ObserverdeCapteur afficher;
|
||||||
private Capteur capteur;
|
private Capteur capteur;
|
||||||
@@ -22,12 +22,12 @@ public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
|||||||
//AO1 - proxy
|
//AO1 - proxy
|
||||||
@Override
|
@Override
|
||||||
public Future<?> update(Capteur c) {
|
public Future<?> update(Capteur c) {
|
||||||
return scheduler.enquete(new UpdateReq(capteur,afficher),delay);
|
return scheduler.enquete(new UpdateReq(capteur,afficher),new Random().nextInt(1000)+500);
|
||||||
}
|
}
|
||||||
|
|
||||||
//AO2 - proxy
|
//AO2 - proxy
|
||||||
@Override
|
@Override
|
||||||
public Future<Integer> getValue() {
|
public Future<Integer> getValue() {
|
||||||
return scheduler.enquete(new GetValueReq(capteur),delay);
|
return scheduler.enquete(new GetValueReq(capteur),new Random().nextInt(1000)+500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ public class Scheduler {
|
|||||||
scheduler = Executors.newScheduledThreadPool(nThread);
|
scheduler = Executors.newScheduledThreadPool(nThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ScheduledExecutorService getScheculer(){
|
||||||
|
return this.scheduler;
|
||||||
|
}
|
||||||
|
|
||||||
public <T> Future<T> enquete(Callable<T> task, long delay) {
|
public <T> Future<T> enquete(Callable<T> task, long delay) {
|
||||||
return scheduler.schedule(task, delay, TimeUnit.MICROSECONDS);
|
return scheduler.schedule(task, delay, TimeUnit.MICROSECONDS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import interfaces.ObserverdeCapteur;
|
|||||||
|
|
||||||
public class main {
|
public class main {
|
||||||
|
|
||||||
static int NB_CANAUX = 20;
|
static int NB_CANAUX = 10;
|
||||||
|
|
||||||
public static void main(String[] argv){
|
public static void main(String[] argv){
|
||||||
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
||||||
@@ -29,12 +29,13 @@ public class main {
|
|||||||
|
|
||||||
for(int i = 0; i<NB_CANAUX; i++){
|
for(int i = 0; i<NB_CANAUX; i++){
|
||||||
Afficheur afficheur = new Afficheur();
|
Afficheur afficheur = new Afficheur();
|
||||||
|
afficheur.setId(i);
|
||||||
Canal canal = new Canal(c, scheduler, afficheur);
|
Canal canal = new Canal(c, scheduler, afficheur);
|
||||||
afficheur.setCanal(canal);
|
afficheur.setCanal(canal);
|
||||||
c.attach(canal);
|
c.attach(canal);
|
||||||
}
|
}
|
||||||
|
|
||||||
ScheduledExecutorService clock = Executors.newScheduledThreadPool(1);
|
ScheduledExecutorService clock = scheduler.getScheculer();
|
||||||
clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS);
|
clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user