Avatar billede celal Nybegynder
13. september 2006 - 11:27 Der er 3 kommentarer og
1 løsning

Thread i java

Jeg er ny i java, og er igang med at lære om Thread(Tråde).
Jeg ved ikke om det er mig der har misforstået noget omkring tråde, men er det ikke sådan at jeg kan have en applikation kørende, som kalder en thread, som udføre en opgave mens selve applikationen kan fortsætte uden at vente på at thread har udført opgaven. Jeg har prøvet med følgende kode, hvor det er meningen at main skal stoppe thread (tråden) efter 3 sekunder, men min tråd udskriver stadig efter 3 sekunder:

******TestThread.java**************

package consoleapplications;

import java.util.logging.Level;
import java.util.logging.Logger;


//This class extends Thread
class TestThread extends Thread {
    private int count;
    public boolean allDone = false;
   
    private static final Logger log = Logger.getLogger(TestThread.class.getName());
   
    // This method is called when the thread runs
    public void run() {
       
        long numMillisecondsToSleep = 1000; // 1 seconds
        count=0;
        for(int i=0; i<9; i++){           
            if (allDone) {return;}           
            System.out.println("i=" + i + " og count= " + getCount(i));           
           
            try {               
                Thread.sleep(numMillisecondsToSleep);
            }
            catch (InterruptedException e){
                log.log(Level.SEVERE, "This is a test ", e);
            }
        }
    }
   
   
    public int getCount(int tal) {
        count = 5 * tal;
        return count;
    }
       
    public void stopRun(){
       
        allDone = true;
    }

}



**************cytest.java**********************



package consoleapplications;
import java.util.logging.Level;
import java.util.logging.Logger;

import consoleapplications.TestThread;



public class cytest {   
   
    private static final Logger log = Logger.getLogger(cytest.class.getName());
   
    public static void main(String[] args) {       
        //Create and start the thread
        Thread thread = new TestThread();
        thread.run();       
        //(thread.allDone=true;
        long numMillisecondsToSleep = 3000; // 3 seconds               
       
        try {               
            Thread.sleep(numMillisecondsToSleep);
            //TestThread.interrupted();           
        }
        catch (InterruptedException e){
            log.log(Level.SEVERE, "The thread is stoped", e);           
        }
       
        //thread.stopRun();
       
        //try { createConn(i);} catch(SQLException e1) {}
     

    }
}
Avatar billede arne_v Ekspert
13. september 2006 - 15:03 #1
du skal kalde thread.start() ikke thread.run for at starte en tråd !
Avatar billede arne_v Ekspert
13. september 2006 - 15:04 #2
Avatar billede celal Nybegynder
31. oktober 2006 - 09:31 #3
Arne hvis du vil have point, så må du svare
Avatar billede arne_v Ekspert
31. oktober 2006 - 13:08 #4
kommer her
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester