专栏首页RunhwGuo的Coding之路Kotlin源码阅读——system模块
原创

Kotlin源码阅读——system模块

Package:kotlin.system

Filename:Process.kt/Timing.kt

在kotlin的源码目录里,每个模块都有相应的md文件,做以说明。在kotlin最主要的stdlin/src目录下有一个Module.md:

目录结构:

文件内容截图:

这个Module.md会介绍每个包的作用,行文描述的还是比较清晰。这一篇就讲一下kotlin.system包下的源码内容。

Process.kt/Timing.kt这两个文件在libraries/stdlib/jvm/src/kotlin/system下。

一、Process.kt

源码如下:

Process.kt文件中就只有一个exitProcess函数,作用是终止当前Java VM,里面调用的是Java的System.exit方法,这里大家可能注意到函数里面,在exit后面又调用了throw RuntimeException,刚开始挺让人疑惑的,可是仔细想想,如果exit没有bug正常工作的话,当前Java虚拟机是终止的,也就是进程都销毁了,后续的代码是不会执行到的,自己写简单的demo,也是可以证明的。这里猜想,Kotlin应该是为了严谨性,才在exitProcess里写上throw异常的代码。

二、Timing.kt

直接上代码截图,刚看到Kotlin提供的这个API的时候,我就觉得很贴心,因为之前在测试代码耗时,经常写这样的代码,先记录一个start时间,再用end - start计算耗时。从截图看很明显,我这里不做赘述,这两个API一个是以毫秒为单位,一个是以纳秒为单位。

贴一张kotlin.system模块的简单demo代码:

总结:所以,目前Kotlin在system模块给我们提供了三个API;

exitProcess:终止Java VM。

measureTimeMillis:计算block代码的毫秒耗时

measureNanoTime:计算block代码的纳秒耗时

大家可以经常使用,多多了解Kotlin的API。

接下来会写一下Kotlin的text文本处理与正则表达式模块。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kotlin源码阅读——Math

    NaN其实在JVM上的语言,并不像JS一样,要特别地学习一下,但是NaN这个逻辑也确实存在。代码跟进去:

    Runhwguo
  • kotlin源码阅读——字符串

    filename:String.kt/StringsJVM.kt/Arrays.kt/CharSequence.kt

    Runhwguo
  • Kotlin源码阅读——IO

    filename:Console.kt/FileTreeWalk.kt/ReadWrite.kt/FileReadWrite.kt

    Runhwguo
  • 深入浅出动态代理

    代理模式是为了提供额外或者不同的操作,而插入代替”实际对象”的对象,即代理类,针对代理类的调用操作,都会涉及到与”实际对象”的通信,代理类起到中间人的作用。Ja...

    luoxn28
  • Flutter成就你的产品梦——就缺一个idea了

    在互联网时代,人们将信息与服务搬到了网络上,后来进入了移动互联网时代,人们又将互联网搬进了你我的生活中。智能手机是移动互联网的载体,如今,我们一刻也离不开智能手...

    arcticfox
  • 面向对象的 6 个基本原则

    一个类只做它该做的事情。 是指一个类的功能要单一, 一个类只负责一个职责。 一个类只做它该做的事情(高内聚)。 在面向对象中, 如果只让一个类完成它该做的事,...

    desperate633
  • 每日算法系列【LeetCode 面试题 17.05】字母与数字

    回忆之前做过的一道题目:每日算法系列【LeetCode 523】连续的子数组和,是不是有点相似?那道题是要求是否含有总和为 的整数倍的连续子数组。而本题要求的...

    godweiyang
  • 桥接模式

    tanoak
  • Java8 Lamdba表达式及Stream详解

    在计算机编程中,匿名函数(函数文字,lambda抽象或lambda表达式)是未绑定到标识符的函数定义。匿名函数通常是传递给高阶函数的参数,或者用于构造需要返回函...

    AWeiLoveAndroid
  • Oracle中使用Entity Framework 6.x Code-First方式开发

    去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券