callable和future -凯发k8国际

`
zw7534313
  • 浏览: 1231617 次
  • 性别:
  • 来自: 北京
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 21)
    • ( 1)
    存档分类
    最新评论

    callable和future

      博客分类:
    • java

      

     callable和future

    callable和future,它俩很有意思的,一个产生结果,一个拿到结果。 

    callable接口类似于runnable,从名字就可以看出来了,但是runnable不会返回结果,并且无法抛出返回结果的异常,而callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被future拿到,也就是说,future可以拿到异步执行任务的返回值,

    public class test extends object{

     

    /**

    * @param args

    */

    public static void main(string[] args) {

    executorservice threadpool = executors.newcachedthreadpool();

            final completionservice cs = new executorcompletionservice(threadpool);

            for(int i = 1; i < 5; i ) {

                final int taskid = i;

                cs.submit(new callable() {

                    public integer call() throws exception {

                    thread.sleep(1000);

                        return taskid;

                    }

                });

            }

            system.out.println(" ***");

            new thread(){

            public void run(){

           // 可能做一些事情

           for(int i = 1; i < 5; i ) {

               try {

                   system.out.println(cs.take().get());

               } catch (interruptedexception e) {

                   e.printstacktrace();

               } catch (executionexception e) {

                   e.printstacktrace();

               }

           }

            }

            }.start();

            system.out.print(" pong");

    }

    void c(){

    executorservice threadpool = executors.newsinglethreadexecutor();

            future future = threadpool.submit(new callable() {

                public integer call() throws exception {

                thread.sleep(1000);

                    return new random().nextint(100);

                }

            });

            

             future = threadpool.submit(new callable() {

                public integer call() throws exception {

                thread.sleep(1000);

                int i=new random().nextint(100);

                system.out.println(i);

                    return i;

                }

            });

            

             future = threadpool.submit(new callable() {

                public integer call() throws exception {

                thread.sleep(1000);

                    return new random().nextint(100);

                }

            });

            

            system.out.print(" pong");

    }

    void b(){

    for(int i=0;i<5;i ){

    callable c = new callable(){

    public string call() throws exception {

    thread.currentthread().sleep(2000);

    system.out.println("call");

    return string.valueof(new random().nextint(100));

    }

    };

    futuretask future = new futuretask(c);

           new thread(future).start();

           

           try {

    thread.currentthread().sleep(1000);

    string s;

    s = future.get();

    system.out.println(s);

    }

           catch (interruptedexception e) {

    system.out.println("**1**");

    e.printstacktrace();

    }catch (executionexception e) {

    e.printstacktrace();

    }

    }

    system.out.print(" pong");

    }

    void a(){

    //int i=0,j,k=0;

    //for(j=0;i<6 && j<10;i ,j ){

    //k=i j;

    //}

    //system.out.println("i=" i ",j=" j);

     

    callable c = new callable(){

    public string call() throws exception {

    thread.currentthread().sleep(2000);

    system.out.println("call");

    return string.valueof(new random().nextint(100));

    }

    };

    futuretask future = new futuretask(c);

           new thread(future).start();

           

           try {

    thread.currentthread().sleep(1000);

    string s;

    s = future.get();

    system.out.println(s);

    }

           catch (interruptedexception e) {

    system.out.println("**1**");

    e.printstacktrace();

    }catch (executionexception e) {

    // todo auto-generated catch block

    e.printstacktrace();

    }

    /*new thread(){

    public void run() {

     

    system.out.print("ping");

    }

    }.start();

    try {

    thread.currentthread().sleep(1000);

    } catch (interruptedexception e) {

    // todo auto-generated catch block

    e.printstacktrace();

    }

    system.out.print(" pong");

    */

    system.out.print(" pong");

    }

     

    }

    分享到:
    |
    评论

    相关推荐

      主要介绍了java使用callable和future创建线程操作,结合实例形式分析了java使用callable接口和future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下

      java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future

      callable和future详解: callable和runnable有几点不同: (1)callable规定的方法是call(),而runnable规定的方法是run(); (2)call()方法可抛出异常,而run()方法是不能抛出异常的。 (3)runnable不会返回结果,...

      主要介绍了java多线程callable和future接口区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

      主要介绍了java中的runnable,callable,future,futuretask的比较的相关资料,需要的朋友可以参考下

      callable,future的使用方式,里面使用了三种使用方式分别是futuretask,executorservice,executorcompletionservice

      主要介绍了详解jdk中executorservice与callable和future对线程的支持的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

      主要介绍了java通过callable和future来接收线程池的执行结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

      主要为大家详细介绍了java concurrency线程池之callable和future,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

      自留demo,主要是thread-callable-future的基本实现。 参考文章: 1、深入理解callable https://blog.csdn.net/qq_19431333/article/details/77483763 2、彻底理解java的future模式: ...

      callable是类似于runnable的接口,实现callable接口的类和实现runnable的类都是可被其它线程执行的任务

      通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则...进程:监控服务器上的进程,并对某些进程、目录、文件进行标识和监控,只允许指定的进程对指定目录下的指定格式文件执行写操作

      2 如何使用futuretask 、future、callable、线程池实现线程2.1 futuretask callable实现多线程2.2 线程池 future callable 实现多线程3 runnable、callable、future和futuretask之间的关系3.1 整体关系介绍3.2 ...

      1. 什么是线程? 2. 什么是线程安全和线程不安全? 3. 什么是⾃旋锁? 4. 什么是cas? 5. 什么是乐观锁和悲观锁? 6. 什么是aqs?...在java concurrency api中有哪些原⼦类(atomic classes)...10. 什么是callable和future?

      主要介绍了浅谈在java中使用callable、future进行并行编程,具有一定借鉴价值,需要的朋友可以参考下。

      什么是 callable 和 future? 线程的调度策略 sleep() 和 wait() 有什么区别? 什么是线程同步和线程互斥,有哪几种实现方式? java 线程数过多会造成什么异常? 并发编程-java内存模型 ## as-if-srial规则和happens-...

      callablecallable与future在web应用中的优化案例

      2万字java并发编程面试题合集(含答案,建议收藏) 具体如下 1、在 java 中守护线程和本地线程区别?2、线程与进程的区别?...14、什么是 callable 和 future?15、什么是 futuretask?使用 executorservice 启动任

      主要介绍了java callable与future的详解及实例的相关资料,需要的朋友可以参考下

      主要介绍了java并发编程callable与future的应用实例代码,具有一定借鉴价值,需要的朋友可以参考下

    global site tag (gtag.js) - google analytics
    网站地图