Eli Elezra
Eli Elezra

Reputation: 535

android run multiple runnable

I would like to run two runnables thread one after one.

Which means that when the first runnable thread complete the second thread starts.

DownSpeedTester speedTester = new DownSpeedTester();
speedTester.setDownUrl(String.valueOf(urlDownload));
new Thread(speedTester).start();

UploadSpeedTester uploadSpeedTester = new UploadSpeedTester();
uploadSpeedTester.setUploadUrl(String.valueOf(urlUpload));
new Thread(uploadSpeedTester).start();

Tried using newSingleThreadExecutor but it didn't succeeded.

ExecutorService es = Executors.newSingleThreadExecutor();
    Future< Boolean> result = es.submit(new Callable<Boolean>() {
        public Boolean call() throws Exception {
            //Download
            DownSpeedTester speedTester = new DownSpeedTester();
            speedTester.setDownUrl(String.valueOf(urlDownload));
            new Thread(speedTester).start();
            return true;
        }
    });
    try {
        boolean res = result.get();
        if (res == true){
            //Upload
            Log.d("mceeli","UploadSpeedTester");
            UploadSpeedTester uploadSpeedTester = new UploadSpeedTester();
            uploadSpeedTester.setUploadUrl(String.valueOf(urlUpload));
            new Thread(uploadSpeedTester).start();
        }
    } catch (Exception e) {

    }
    es.shutdown();

It still running together.

Please Help me.

Upvotes: 1

Views: 615

Answers (1)

npace
npace

Reputation: 4258

Using the single thread executor, just don't spawn any more Threads:

ExecutorService es = Executors.newSingleThreadExecutor();
DownSpeedTester speedTester = new DownSpeedTester();
speedTester.setDownUrl(String.valueOf(urlDownload));
es.submit(speedTester);

UploadSpeedTester uploadSpeedTester = new UploadSpeedTester();
uploadSpeedTester.setUploadUrl(String.valueOf(urlUpload));
es.submit(uploadSpeedTester);

es.shutdown();

Upvotes: 1

Related Questions