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) {}
}
}
