新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 计算机科学论坛计算机技术与应用『 Java/Eclipse 』 → java并发研读笔记(二) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4901 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: java并发研读笔记(二) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     杨一 帅哥哟,离线,有人找我吗?水瓶座1983-2-19
      
      
      等级:大一(猛啃高等数学)
      文章:11
      积分:135
      门派:XML.ORG.CN
      注册:2005/11/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给杨一发送一个短消息 把杨一加入好友 查看杨一的个人资料 搜索杨一在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看杨一的博客楼主
    发贴心情 java并发研读笔记(二)

    rejectedExecution定义了当 execute 不能接受某个任务时,可以由 ThreadPoolExecutor 调用的方法。因为超出其界限而没有更多可用的线程或队列槽时,或者关闭 Executor 时就可能发生这种情况。 在没有其他替代方法的情况下,该方法可能抛出未经检查的 RejectedExecutionException,而该异常将传播到 execute 的调用方。
       它是作为executor的一个参数出现的
       defaultThreadFactory返回用于创建新线程的默认线程工厂。此工厂创建同一 ThreadGroup 中 Executor 使用的所有新线程。如果有 SecurityManager,则它使用 System.getSecurityManager() 组来调用defaultThreadFactory 方法,其他情况则使用线程组。每个新线程都作为非守护程序而创建,并且具有 Thread.NORM_PRIORITY 优先级。新线程具有可通过pool-N-thread-M 的 Thread.getName() 来访问的名称,其中 N 是此工厂的序列号,M 是此工厂所创建线程的序列号。
       它也是作为executor的一个参数出现的
       Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。计算完成后只能使用 get 方法来检索结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future但又不提供可用的结果,则可以声明 Future<?> 形式类型、并返回 null 作为基础任务的结果。

    下面两行是我在源代码中找出的结构:
    public interface RunnableFuture extends Runnable, Future
    public class FutureTask implements RunnableFuture
    可见FutureTask本身就是Runnable的,可以作为executor执行的参数,并期待它的返回值。
    那么Runnable和Callable又是什么关系呢?
    在javadoc中是这样描述的:
    Callable<V>返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。
    Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。
    在源代码中Callable接口定义如下:
    public interface Callable {  
      Object call() throws Exception;
    }
    可见,该接口具备了返回对象的能力,却不具备Runnable的能力。
    设计者通过在FutureTask构造方法中定义Callable,使得实现了Runnable的future具备了return Object的能力
    一个便于理解的实例如下所示:
         FutureTask<String> future =
           new FutureTask<String>(new Callable<String>() {
             public String call() {
               return searcher.search(target);
           }});
         executor.execute(future);


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/30 17:27:00
     
     GoogleAdSense水瓶座1983-2-19
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/23 3:50:54

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    82.031ms