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(); } }