I want to start learning Java a bit. I am about to write a pretty basic program, where I want to display a series of numbers (1,2,3,4, 5….etc) in an infinite loop. The program should quit if someone hits a specific key (Say ESCAPE key). So I thought about using Threads for those two tasks (infinite loop and the user binding). I just have a Thread for the infinite loop and this is how my Code looks like:
public class LearnJava implements Runnable {
private int i = 0;
private boolean running = false;
private Thread counter;
public void start(){
running = true;
counter = new Thread(this);
counter.start();
}
/*the stop method is not really in use yet*/
public void stop(){
running = false;
try{
counter.join();
}
catch (InterruptedException e){
e.printStackTrace();
}
}
public void run(){
while (running){
System.out.println("ThreadTest: " + i);
i++;
}
}
public LearnJava(){
}
public static void main(String[] args){
LearnJava programm = new LearnJava();
programm.start();
}
}
Now what I don't understand in my own example is the "this" reference in my Thread. I always tried to run it with out any reference, because I didn't knew the reason for it. I just got the correct code by random to be honest. I wrote it all by myself and thought to understand it properly but obviously I am not. Can anybody explain why I needed to take the "this" reference in line:
counter = new Thread(this);
Notice that you've implemented the Runnable
interface? When you say new Thread(this)
you're saying "Create a new Thread which will run my class when started"
Take a peek at the documentation for Thread, and you'll see a constructor which takes a Runnable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With