24. april 2002 - 10:28Der er
5 kommentarer og 1 løsning
tråde - interface Runnable
Jeg har et objekt der implementerer Runnable interface. Start metoden ser således ud: public void start() { Thread thread = new Thread(this); try { thread.start();
} catch (Exception e) {} } Jeg arver ikke fra Thread, hvordan kan jeg så slette/stoppe tråden
Det er meget tvivlsomt at det skulle have nogen virkning. At sætte thread = null stopper ikke tråden det betyder bare at man ikke har håndtag i den længere. Mht. stop metoden er den ikke påkrævet i Runnable og er iøvrigt deprecated og bør under ingen omstændigheder bruges. Den eneste pæne måde at stoppe en tråd på er at lave en ny klasse der ser ud som f.eks. her: Tråde der nedarver fra denne klasse skal så sørge for checke shouldStop metoden jævnligt i sin run metode og hvis den er blevet bedt om at stoppe skal den stoppe pænt. public abstract class StoppableThread extends Thread { private boolean stop = false; public void pleaseStop() { stop = true; } public synchronized boolean shouldStop() { return stop; } }
Nej det vil den bestemt ikke, sålænge run metoden ikke returnerer vil tråden fortsætte med at leve. Om du har en reference til tråden er helt irrelevant. Nedenstående anonyme tråd vil eksistere for evigt, eller indtil den virtuelle maskine lukkes ned af et System.exit(.) kald. Iøvrigt vil det være en uhørt at stoppe noget på ved at vente på garbage collection da du ingen garanti har for at det nogensinde sker, der findes formentlig VM der ikke har en gc! new Thread(new Runnable(() { public void run() { while ( 1 == 1 ) { } } }).start();
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.