This was taken from java9s tutorial on youtube, which was based on a java program and covered into something more Android.
MainActivity.java
package com.jamesfroggatt.threaddemo1.app;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.myview);
Racer racer = new Racer();
Thread tortoiseThread = new Thread(racer, "Tortoise");
Thread hareThread = new Thread(racer, "Hare");
tortoiseThread.start();
hareThread.start();
Log.v("End of start", "End of start methods for both threads");
}
}
package com.jamesfroggatt.threaddemo1.app;
import android.app.Activity;
import android.util.Log;
/**
* Created by J on 18/04/2014.
*/
public class Racer extends Activity implements Runnable {
public static String winner;
public void race() {
for (int distance = 1; distance <= 80; distance++) {
Log.v("=>", "Distance covered by " + Thread.currentThread().getName() + " is " + distance);
boolean isRaceWon = this.isRaceWon(distance);
if (isRaceWon) {
break;
}
}
}
private boolean isRaceWon(int totalDistanceCovered) {
boolean isRaceWon = false;
if ((Racer.winner == null) && (totalDistanceCovered == 80)) {
String winnerName = Thread.currentThread().getName();
Racer.winner = winnerName; // set the winner name
Log.v("Winner", "Winner is " + Racer.winner);
isRaceWon = true;
} else if (Racer.winner == null) {
isRaceWon = false;
} else if (Racer.winner != null) {
isRaceWon = true;
}
return isRaceWon;
}
@Override
public void run() {
Log.v("Run()", "Run "+Thread.currentThread().getName());
this.race();
}
}