Multithreading Android Example

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


}

Leave a Reply