【问题标题】:android run multiple runnableandroid运行多个runnable
【发布时间】:2016-09-01 11:46:46
【问题描述】:

我想一个接一个地运行两个可运行线程。

这意味着当第一个可运行线程完成时,第二个线程启动。

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

尝试使用 newSingleThreadExecutor 但没有成功。

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

它仍然一起运行。

请帮帮我。

【问题讨论】:

  • 在第一个回调中调用第二个线程

标签: android multithreading runnable


【解决方案1】:

使用单线程执行器,不要再产生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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多