前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kotlin源码阅读——system模块

Kotlin源码阅读——system模块

原创
作者头像
Runhwguo
发布于 2018-10-07 04:09:40
发布于 2018-10-07 04:09:40
1.1K0
举报

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文本处理与正则表达式模块。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kotlin源码阅读——Standard模块
Filename:stdlib/src/kotlin/util/Standard.kt
Runhwguo
2018/10/05
1.1K0
Kotlin源码阅读——IO
filename:Console.kt/FileTreeWalk.kt/ReadWrite.kt/FileReadWrite.kt
Runhwguo
2018/09/22
1K0
kotlin源码阅读——字符串
filename:String.kt/StringsJVM.kt/Arrays.kt/CharSequence.kt
Runhwguo
2018/09/05
2.7K1
kotlin源码阅读——函数式编程
我主要写Kotlin源码阅读,函数式编程的基本概念,概念大家可以在网上做一些了解,这里推荐一下百度百科的定义,函数式编程概念,蛮清晰的。
Runhwguo
2018/09/13
8770
Kotlin源码阅读——Math
NaN其实在JVM上的语言,并不像JS一样,要特别地学习一下,但是NaN这个逻辑也确实存在。代码跟进去:
Runhwguo
2018/10/05
2.1K0
《Kotlin极简教程》第2章 快速开始:HelloWorld
我们在本章将介绍使用Kotlin程序设计语言,分别使用命令行、应用程序、Web RESTFul、Android、Kotlin JavaScript等方式向世界问好:你好,世界。
一个会写诗的程序员
2018/08/17
1.8K0
《Kotin 极简教程》第16章 使用 Kotlin Native第16章 使用 Kotlin Native《Kotlin极简教程》正式上架:
不得不说 JetBrains 是一家务实的公司,各种IDE让人赞不绝口,用起来也是相当溜。同样的,诞生自 JetBrains 的 Kotlin 也是一门务实的编程语言,Kotlin以工程实用性为导向,充分借鉴了Java, Scala, Groovy, C#, Gosu, JavaScript, Swift等等语言的精华,让我们写起代码来可谓是相当优雅却又不失工程质量与效率。Kotlin Native能把 Kotlin代码直接编译成机器码,也就是站在了跟 C/C++、Go和Rust的同一个层次,于是这个领域又添一位竞争对手。
一个会写诗的程序员
2018/08/17
1.3K0
《Kotin 极简教程》第16章 使用 Kotlin Native第16章 使用 Kotlin Native《Kotlin极简教程》正式上架:
《Kotin 极简教程》第15章 Kotlin 文件IO操作、正则表达式与多线程第15章 Kotlin 文件IO操作与多线程《Kotlin极简教程》正式上架:
我们在使用 Groovy 的文件 IO 操作的时候,感觉非常便利。同样的Kotlin也有好用的文件 IO 操作的 API。同样的在 Kotlin 中对 Java 的正则表达式功能做了一些实用的扩展。还有 Kotlin 中的多线程主要也是对 Java 的多线程 API 作了一些封装。因为这些 Java 已经有了很多的基础 API,Kotlin 并没有自己再去重复实现,而是在 Java 的基础上进行了实用的功能扩展。
一个会写诗的程序员
2018/08/17
3.5K0
Android&Kotlin编译速度原理剖析
由于内容比较多,所以拆分了两部分来讲解。欢迎点赞和关注给作者一些动力感谢感谢。如果有任何的想法和创意都可以直接和我联系讨论。整体内容主要分为六部分来介绍:
Rouse
2021/05/28
2K0
Android&Kotlin编译速度原理剖析
kotlin源码阅读——基础数据类型
基本和所有编程语言一样,基本数据类型有Byte/Short/Int/Long/Float/Double,且和Java一样都是有符号性的。
Runhwguo
2018/09/01
1.3K0
《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
一个会写诗的程序员
2018/08/20
1.1K0
《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
kotlin--协程的启动和取消
launch:我们之前已经使用过了GlobalScope的launch来启动协程,它返回一个Job async:返回一个Deferred,它也是一个Job,但是可以使用await函数获得运行的结果 除了之前结构化并发中介绍的几种指定CoroutineScope的API外,我们还可以使用runBlocking函数来指定CoroutineScope,他会使用主线程来转换成协程 launch和async内如果有子协程,那么该协程会等待子协程执行结束
aruba
2021/12/06
1K0
kotlin--协程的启动和取消
《Springboot极简教程》 Springboot plus Kotlin :Hello,WorldKotlin, Console: Hello,WorldSpringBoot Kotlin JP
https://github.com/MiniSpringBootTutorial/mini_springboot/blob/master/src/main/kotlin/jason/chen/mini_springboot/console/HelloWorld.kt
一个会写诗的程序员
2018/08/20
1.2K0
《Springboot极简教程》 Springboot plus Kotlin :Hello,WorldKotlin, Console: Hello,WorldSpringBoot Kotlin JP
《Kotlin 程序设计》第二章 快速开始:HelloWorld
程序的本质就是映射(函数)。比如说kotlinc这个程序,我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlinc编译器生成的JVM字节码与Java编译的字节码基本相同,也因此与Java可以完全兼容,并且语法更加简洁。
一个会写诗的程序员
2018/08/17
9190
kotlin--协程上下文、异常处理
当我们在a协程延迟函数100ms之前开启一个子协程b,b做了200ms的事情,如果不考虑调度消耗的时间,那么a协程的生命也会延长成200ms
aruba
2021/12/06
9770
kotlin--协程上下文、异常处理
Kotlin Flow 看这一篇 带你入门~
在最近的三篇中,标题都是 ***** 看这一篇就够了,而这篇关于Flow的,我认怂了,只能说 看这一篇 带你入门~,因为我发现Flow牵扯的东西实在是太多了,就像RxJava别说两篇 可能五篇也是说不完的。
黄林晴
2020/11/12
1.4K0
Spring Boot 使用 Kotlin Script Template 模板引擎kts 开发web
在 Spring Framework 5.0 M4 中引入了一个专门的Kotlin支持。
一个会写诗的程序员
2018/08/17
1.3K0
【Kotlin 协程】协程启动 ③ ( 协程组合并发 | 挂起函数串行执行 | 协程组合并发执行挂起函数 )
在协程体中 , 连续使用多个挂起函数 , 这些函数的执行是顺序执行的 , 挂起函数 1 执行完毕后 , 才执行 挂起函数 2 ;
韩曙亮
2023/03/30
7270
【Kotlin 协程】协程启动 ③ ( 协程组合并发 | 挂起函数串行执行 | 协程组合并发执行挂起函数 )
Kingfisher源码阅读(三)
上一篇地址:Kingfisher源码阅读(二) 第一篇地址:Kingfisher源码阅读(一)
Sheepy
2018/09/10
7630
Kotlin | 协程使用手册(不间断更新)
在概念上,async 就类似于 launch。它启动了一个单独的协程,这是一个轻量级的线程并与其它所有的协程一起并发的工作。不同之处在于 launch 返回一个 Job 并且不附带任何结果值,而 async 返回一个 Deferred —— 一个轻量级的非阻塞 future, 这代表了一个将会在稍后提供结果的 promise。你可以使用 .await() 在一个延期的值上得到它的最终结果, 但是 Deferred 也是一个 Job,所以如果需要的话,你可以取消它。
Petterp
2022/02/09
2.5K0
Kotlin | 协程使用手册(不间断更新)
推荐阅读
相关推荐
Kotlin源码阅读——Standard模块
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档