La méthode yield() permet à une activité de rendre la main et provoque un « rescheduling ».
transparent
class Main { public static void main(String args[] ) { // Une Activite par intervalle de priorité Activite[] acts = new Activite[Thread.MAX_PRIORITY-Thread.MIN_PRIORITY]; // Démarrer les Activites avec leur priorité for (int i=0; i< acts.length; i++) { acts[i] = new Activite(Thread.MIN_PRIORITY+i); acts[i].start(); } for (int i=acts.length-1; i >= 0; i--) { try {acts[i].join();} catch (Exception e) {} System.out.println(acts[i].getName() + ": " + acts[i].time + " ms"); } } }
class Activite extends Thread { // regarder l'heure de création long time = System.currentTimeMillis(); Activite(int priorité) { setPriority(priorité); setName("Activité de priorité :"+priorité); } public void run() { // Commencer le travail float r = 0; for (int i=1; i<1024; i++) { r += i + r/i; } // Regarder l'heure. time = System.currentTimeMillis() - time; } }
Activité de priorité :9: 2 ms Activité de priorité :8: 3 ms Activité de priorité :7: 3 ms Activité de priorité :6: 2 ms Activité de priorité :5: 6 ms Activité de priorité :4: 44 ms Activité de priorité :3: 53 ms Activité de priorité :2: 59 ms Activité de priorité :1: 66 ms