文章目录

  • 一、Groovy 扩展方法引入
  • 二、 分析 Groovy 中 Thread 类的 start 扩展方法

一、Groovy 扩展方法引入


Groovy 可以对 JDK 中的一些类进行 方法扩展 , 这些 JDK 自带类可以执行额外的扩展方法 ;

在之前的博客 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 ) 中 , 使用了

Thread.start {}

用法 , 在闭包中执行的就是线程 Threadrun 方法内容 ;

二、 分析 Groovy 中 Thread 类的 start 扩展方法


分析该为 Thread 类扩展的 start 扩展方法 , 扩展方法定义在了 DefaultGroovyStaticMethods 类中 ;

start 方法接收一个 Thread self 线程对象 参数 和 Closure closure 闭包参数 ;

指定为哪个类定义扩展方法 : 第一个参数 Thread self , 表示只能在 Thread 对象上调用该 start 扩展方法 , 其它非 Thread 类型的对象 , 无法调用该 start 方法 ;

指定扩展方法的参数 : 第二个参数 Closure closure , 表示为 Thread 类扩展的 start 方法参数是 闭包 类型 ;

Thread 类的 start 扩展方法 源码 :

/*** 这个类定义了groovy环境中普通JDK类上出现的所有新的静态groovy方法。* 静态方法与第一个参数一起用作目标类。*/
public class DefaultGroovyStaticMethods {/*** 以给定的闭包作为可运行实例启动线程。** @param self    Groovy类别使用的占位符变量;默认静态方法忽略* @param closure 可运行的闭包* @return 返回已经启动的线程 * @since 1.0*/public static Thread start(Thread self, Closure closure) {return createThread(null, false, closure);}
}

【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )相关推荐

  1. 如何在Java Reflection中的类下获取所有方法信息?

    本文以我以前的文章为基础 . 在本文中,我们将看到如何使用Java Reflection检索类相关信息. 我们将重点介绍方法名称. 注意:我将创建一个单独的反射器实用程序类,在该类中,我们在其构造函数 ...

  2. Python中的类、实例以及方法,MRO继承解析顺序以及Mixin类

    Contents 1. 什么是类和实例 2. 类的实例方法.类方法和静态方法 3. MRO是什么,描述其查找顺序 4. Mixin是什么,描述其应用场景 5. References 1. 什么是类和实 ...

  3. python类和对象介绍_python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  4. @async方法不调用了_在Spring中使用Future对象调用Async方法调用

    @async方法不调用了 下一个示例将演示Spring容器内部的异步方法调用. 为什么我们需要异步方法调用? 在某些情况下,我们并不真正知道是否需要重播或何时应返回结果. 传统方式在Java EE世界 ...

  5. 不应该通过类实例访问静态成员 解决方法_今天说一说php中的类与对象

    网上的文章博客这种东西已经写烂了. 我只是写写自己理解.... 首先都知道php的面向对象,什么封装,集成,多态,灵活,简单,代码简洁,重用行强,利于维护,什么什么三个方向:灵活性,重用行,扩展性. ...

  6. 在计算机系统中 一个以科学的方法组织,(10)在计算机系统中,一个以科学的方法组织、存储数据,并可高效地获取、维护数据的软件系统称为【10】...

    (10)在计算机系统中,一个以科学的方法组织.存储数据,并可高效地获取.维护数据的软件系统称为[10] 更多相关问题 [单选] 保险展业的发展趋势是() [多选] 取保候审中,保证人应当履行的义务是( ...

  7. python json方法详解_详解python中的json的基本使用方法

    在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env ...

  8. Java中Thread类的start()和run()方法

    1.两个方法的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run()   : run()就和普通的成员方法一样,可以被重复调用 ...

  9. Thread 类及常用的方法

    文章目录 一.Thread 的常见构造方法 二.Thread 的常见属性 三.创建线程 四.中断线程 五.线程等待 六.获取线程引用 七.线程休眠 八.线程状态 一.Thread 的常见构造方法 方法 ...

最新文章

  1. 两个超长正整数的加法c语言,二个超长正整数的相加
  2. 日常运维管理技巧十六(iftop网卡流量监控工具)(转载)
  3. ​“统治”移动处理器市场的Arm为何明年Q1才发布AI处理器?
  4. form表单,submit,ajax提交
  5. 计算机等级考试java题型_计算机等级考试报考建议
  6. exec vs sp_executesql
  7. 两条信号之间加电容_信号完整性SI读书笔记之一
  8. 北斗三号频点_定位精度超越GPS!紫光展锐推出支持北斗三代的四合一芯片
  9. arcgis api 3.X 几种查询方式比较
  10. 腾讯与新浪微博开放平台之比较
  11. 现代控制工程(三)状态方程的解
  12. BZOJ1050 [HAOI2006]旅行comf (并查集)
  13. Unity 游戏多语言解决方案和字体错误解决方法的想法
  14. 用python画漂亮的网状几何图形
  15. 小程序开发之全栈开发(一)
  16. 【Python 测验 01编程】数值运算
  17. html网页轮播速度,纯HTML+JS实现轮播
  18. 小程序入门教程之微信-02-页面样式
  19. CSDN如何上传视频?
  20. ppt如何导出成高清图片

热门文章

  1. 数据库的优化tips
  2. odoo8.0+PyCharm4.5开发环境配置
  3. 04 javascirpt基础知识---听课笔记
  4. 记录MNIST采用卷积方式实现与理解
  5. MySQL数据库性能优化的八种方式
  6. Codeforces 1016F Road Projects
  7. Python爬虫之BeautifulSoup和requests的使用
  8. NOIP2006提高组 能量项链
  9. BZOJ1452 [JSOI2009]Count 树状数组
  10. IOS 2D游戏开发框架 SpriteKit--续(postion,锚点,游戏滚动场景)