Deo zbornika Učimo Javu

Prioriteti niti

Email Twitter LinkedIn Facebook Google

Nisu sve niti jednako važne. Niti koji komuniciraju s korisnikom trebaju imati visok prioritet. S druge strane, nitima koje obavljaju računanja u pozadini treba dodijeliti nizak prioritet.

Prioritet niti zadaje se brojem između 1 i 10. Deset je najviši prioritet, jedan je najniži (suprotno UNIX-u, gdje veći broj označava manji prioritet). Normalni prioritet je pet. Niti s višim prioritetom dobit će više CPU vremena. Zbog udobnosti, klasa Thread definira tri konstante, Thread.MAX_PRIORITY, Thread.MIN_PRIORITY i Thread.NORM_PRIORITY koje možete koristiti umjesto numeričkih vrijednosti.

Prioritet threada zadajete pomoću metode setPriority():

setPriority(int newPriority)

Sljedeći program dodjeljuje nitima stampac1, stampac2 i stampac3 različite prioritete. Iako je stampac3 pokrenut zadnji, vjerojatno će biti gotov prvi, budući da mu je dodijeljen najviši prioritet.

class ImenovanStampac extends Thread {

  public ImenovanStampac(String name) {
    super(name);
  }

  public void run() {
    System.out.println(this.getName() + ": pocinjem!");
    for (int b = -10; b < 10; b++) {
      System.out.println(this.getName() + ": " + b);
    }
    System.out.println(this.getName() + ": gotovo!");
  }

}


public class ProbaPrioriteta {

  public static void main(String args[]) {

    ImenovanStampac stampac1 = new ImenovanStampac("Frank");
    ImenovanStampac stampac2 = new ImenovanStampac("Mary");
    ImenovanStampac stampac3 = new ImenovanStampac("Chris");
    stampac1.setPriority(Thread.MIN_PRIORITY);
    stampac2.setPriority(Thread.NORM_PRIORITY);
    stampac3.setPriority(Thread.MAX_PRIORITY);
    stampac1.start();
    stampac2.start();
    stampac3.start();

  }

}

Pokretanje iz konzole:

% javac ProbaPrioriteta.java
% java ProbaPrioriteta
Chris: pocinjem!
Chris: -10
. . .
Chris: 9
Chris: gotovo!
Mary: pocinjem!
Mary: -10
. . .
Mary: 9
Mary: gotovo!
Frank: pocinjem!
Frank: -10
. . .
Frank: 9
Frank: gotovo!

Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.