Indeks IndeksBurroughs, Edgar Rice Tarzan 04 The Son of TarzanCat Johnson [Red, Hot, & Blue 04] Jared [Samhain] (pdf)John Maddox Roberts Stormlands 04 Steel Kings UC FR6Becky Wilde [Passion Victoria 04] Beth's Savoirs (pdf)Wil McCarthy The Queendom of Sol 04 To Crush the Moon (Bantam)Farmer, Philip Jose World of Tiers 04 Behind the Walls of Terra140. Paige Laurie Canyon Country 04 Dom dla dwojgaFred Saberhagen Lost Swords 04 Farslayers storyJana Downs His Guardian Angels 04 Angel WedJane Lisa Smith Pamiętniki wampirów 04 Mrok
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • limerykarnia.xlx.pl
  •  

    [ Pobierz całość w formacie PDF ]

    Demon: Thread[Signal dispatcher,5,system]
    Demon: Thread[Reference Handler,10,system]
    Demon: Thread[Finalizer,8,system]
    Demon: Thread[DEMON,5,main]
    Okazuje się więc, że jedynym wątkiem w Javie po uruchomieniu programu (czyli bez
    własnych wątków) nie będącym demonem jest wątek main. Demon jest więc wątkiem
    działającym w tle. Jeżeli wszystkie istniejące wątki są demonami to Maszyna
    Wirtualna kończy pracę. Podobnie można oznaczyć grupę wątków jako demon. Nie
    oznacza to jednak, że automatycznie wszystkie wątki należące do tej grupy będą
    demonami.
    Poniższy przykład ukazuje sytuację, w której wszystkie aktualnie wykonywane wątki
    przez Maszynę Wirtualną stanją się demonami. Wówczas maszyna kończy pracę.
    Przykład 4.11:
    //Duch.java
    class Zly extends Thread{
    Zly(){
    super();
    setName("Zly_demon");
    //setDaemon(true);
    }
    public void run(){
    while(!this.isInterrupted()){
    }
    }
    }// koniec class Zly
    class Cacper extends Thread{
    Cacper(ThreadGroup g, String s){
    super(g,s);
    }
    public void run(){
    Zly z = new Zly();
    z.start();
    while(!this.isInterrupted()){
    }
    4-26
    Jacek Rumiński - Język JAVA 
    Jacek Rumiński - Język JAVA  Rozdział 4
    Jacek Rumiński - Język JAVA 
    Jacek Rumiński - Język JAVA 
    }
    }//koniec class Cacper
    public class Duch {
    public static void main(String args[]) {
    ThreadGroup zle_duchy = new ThreadGroup("zle_duchy");
    Cacper c = new Cacper(zle_duchy,"cacper");
    c.start();
    try{
    Thread.currentThread().sleep(4000);
    }catch (Exception e){}
    ThreadGroup grupa = Thread.currentThread().getThreadGroup();
    while(grupa.getParent() != null) {
    grupa = grupa.getParent();
    }
    grupa.list();
    c.interrupt();
    try{
    Thread.currentThread().sleep(4000);
    }catch (Exception e){}
    grupa = Thread.currentThread().getThreadGroup();
    while(grupa.getParent() != null) {
    grupa = grupa.getParent();
    }
    grupa.list();
    }
    }// koniec public class Duch
    W powyższym kodzie stworzono trzy wątki:  main ->  cacper ->  Zly_demon . Po
    określonym czasie (4 sekundy) wątek  cacper ginie śmiercią naturalną, zostawiając
    pracujący wątek  Zly_demon . Po uruchomieniu tego programu pokażą się dwa
    wydruki o stanie wątków, po czym program zawiesi się (wieczna pętla wątku
     Zly_demon ). Co ciekawe, jeżeli wywoła się polecenie wydruku stanu wątków
    (CTRL-Break dla Windows) okaże się, że brak jest wątku o nazwie  main . Jeżeli
    powyższy kod ulegnie zmianie w ten sposób, że wątek  Zly_demon uzyska status
    demona, wówczas Maszyna Wirtualna przerwie pracę nawet jeżeli wątek
     Zly_demon wykonuje wieczne działania.
    Bibliografia
    [1] Sun, Java Language Specification, Sun 1998
    [2] Allen Hollub, Java Toolbox: Programming Java threads in the real world,
    JavaWorld, http://www.javaworld.com/jw-04-1999/jw-04-toolbox.html, 1999
    [3] Sun, The Java Tutorial, Sun 1998.
    4-27 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ftb-team.pev.pl
  •