Deo zbornika Učimo Javu

Imenovanje niti

Često je korisno dati različitim nitima iste klase imena po kojima ih možete razlikovati. Sljedeći konstruktor klase Thread to omogućuje:

public Thread(String name)

Uobičajeno ga je pozvati iz konstruktora podklase s kojom radimo, kao u sljedećem primjeru:

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!");
  }

}

Metoda getName() iz klase Thread vratit će ime niti. Sljedeći program omogućuje razlikovanje ispisa prema threadovima koji su ih proizveli:

class ImenovaniStampaciProba {

  public static void main(String[] args) {

    ImenovanStampac stampac1 = new ImenovanStampac("Frank");
    ImenovanStampac stampac2 = new ImenovanStampac("Mary");
    ImenovanStampac stampac3 = new ImenovanStampac("Chris");
    stampac1.start();
    stampac2.start();
    stampac3.start();

  }

}

Primer

Celokupni program u jednom fajlu bi izgledao ovako:

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!");
  }

}


class ImenovaniStampaciProba {

  public static void main(String[] args) {

    ImenovanStampac stampac1 = new ImenovanStampac("Frank");
    ImenovanStampac stampac2 = new ImenovanStampac("Mary");
    ImenovanStampac stampac3 = new ImenovanStampac("Chris");
    stampac1.start();
    stampac2.start();
    stampac3.start();

  }

}

Ovako se pokrece iz zasebnih fajlova:

% javac ImenovanStampac.java
% javac ImenovaniStampaciProba.java
% java ImenovaniStampaciProba
Frank: pocinjem!
Frank: -10
. . .
Frank: -4
Mary: pocinjem!
Chris: pocinjem!
Mary: -10
. . .
Mary: 9
Mary: gotovo!
Chris: 3
. . .
Chris: gotovo!
Frank: -3
. . .
Frank: 9
Frank: gotovo!

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