多线程(一) 创建多线程

血红的双手。 提交于 2019-11-27 21:31:41

1.继承Thread,重新run方法

2.实现Runnable方法

3.FutureTask实现Future

 public void testCallBack() {
        final FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                int i = 0;
                while (i < 100) {
                    i++;
                }
                return i+"";
            }
        });

        new Thread(futureTask).start();
 
        //FutureTask实现了Callbale和Runnable接口
     
        boolean done = futureTask.isDone();//如果Task完成,返回true
        boolean cancelled = futureTask.isCancelled();//正常完成前被取消,返回true
        futureTask.cancel(true); //试图取消Future关联的Callable任务
         try {
            futureTask.get(2000, TimeUnit.SECONDS);//阻塞方法,超过该时间没有返回值则报错
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }

    }
  Task task = new Task();
        ExecutorService executorService = Executors.newCachedThreadPool();
 
        Future<String> future = executorService.submit(task);
        try {
            //阻塞方法
            String result = future.get();
            Log.d(TAG, "future result = " + result);
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!