协程 协程是轻量级线程,一个线程中可以有很多协程,协程本质上可以认为是运行在线程上的代码块,协程提供的挂起操作会使协程暂停执行,而不会导致线程阻塞。协程的实现大多都在编译器操...
协程 协程是轻量级线程,一个线程中可以有很多协程,协程本质上可以认为是运行在线程上的代码块,协程提供的挂起操作会使协程暂停执行,而不会导致线程阻塞。协程的实现大多都在编译器操...
2023-01-13T11:00:52.573 start:0
2023-01-13T11:00:52.574-> pool-1-thread-1开始读取文件 0
2023-01-13T11:00:53.151-> pool-1-thread-1结束读取文件0,文件大小为:535M,使用时间为:577
.
2023-01-13T11:00:53.151 end:0
2023-01-13T11:00:53.152 start:1
2023-01-13T11:00:53.152-> pool-1-thread-1开始读取文件 1
2023-01-13T11:00:53.670-> pool-1-thread-1结束读取文件1,文件大小为:535M,使用时间为:518
.
2023-01-13T11:00:53.670 end:1
2023-01-13T11:00:53.670 start:2
2023-01-13T11:00:53.670-> pool-1-thread-1开始读取文件 2
2023-01-13T11:00:54.177-> pool-1-thread-1结束读取文件2,文件大小为:535M,使用时间为:507
.
2023-01-13T11:00:54.177 end:2
2023-01-13T11:00:54.177 start:3
2023-01-13T11:00:54.177-> pool-1-thread-1开始读取文件 3
2023-01-13T11:00:54.690-> pool-1-thread-1结束读取文件3,文件大小为:535M,使用时间为:513
.
2023-01-13T11:00:54.690 end:3
2023-01-13T11:00:54.690 start:4
2023-01-13T11:00:54.690-> pool-1-thread-1开始读取文件 4
2023-01-13T11:00:55.194-> pool-1-thread-1结束读取文件4,文件大小为:535M,使用时间为:503
.
2023-01-13T11:00:55.194 end:4
这是打印的数据
kotlin协程的使用与原理协程 协程是轻量级线程,一个线程中可以有很多协程,协程本质上可以认为是运行在线程上的代码块,协程提供的挂起操作会使协程暂停执行,而不会导致线程阻塞。协程的实现大多都在编译器操...
fun main(){
f()
}
fun f() = runBlocking {
//创建自定义线程池
val coroutineDispatcher = Executors.newFixedThreadPool(1).asCoroutineDispatcher()
repeat(5) { // 启动大量的协程
launch(coroutineDispatcher) {
println("${LocalDateTime.now()} start:${it}")
readFile(it)
println(".")
println("${LocalDateTime.now()} end:${it}")
}
}
}
private fun readFile(i:Int): Long {
val start = System.currentTimeMillis()
println("${LocalDateTime.now()}-> ${Thread.currentThread().name}开始读取文件 ${i}")
val path = "/Users/pjgao/IdeaProjects/data/gldrawable${i}.zip"
val file = File(path)
val readBytes = file.readBytes()
val fileSize = readBytes.size / 1024 / 1024
//val fileSize = 0
val useTime = System.currentTimeMillis() - start
println("${LocalDateTime.now()}-> ${Thread.currentThread().name}结束读取文件${i},文件大小为:${fileSize}M,使用时间为:$useTime")
return useTime
}
这是测试代码
kotlin协程的使用与原理协程 协程是轻量级线程,一个线程中可以有很多协程,协程本质上可以认为是运行在线程上的代码块,协程提供的挂起操作会使协程暂停执行,而不会导致线程阻塞。协程的实现大多都在编译器操...
这边有个 关于协程 ,对io操作的疑惑。我这边自定义一个分发器。底层是单个固定线程的线程池。然后基于这个分发器开多个协程 去读取文件。发现读取的时间还是相当于一个个读的时间,并没有并发的效果。按前面 “关于IO操作” 的说法,应该对于多个文件是可以做到并发读的效果?
kotlin协程的使用与原理协程 协程是轻量级线程,一个线程中可以有很多协程,协程本质上可以认为是运行在线程上的代码块,协程提供的挂起操作会使协程暂停执行,而不会导致线程阻塞。协程的实现大多都在编译器操...
Java JVM及相关概念1、概述 JVM是Java Virtual Machine(Java虚拟机)的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算...
1、概述 OOP(Object-oriented programming),指面向对象程序设计。也是目前主流的程序设计思想。这边讨论下由Robert C. Martin在21...
1、概述 前面几篇关于OpenGLES的文章: OpenGL ES 2.0 显示图形(上) OpenGL ES 2.0 显示图形(下) OpenGL ES 3.0(一)综述 ...
国内的手机要去应用市场下个ARCore组件才行。
ARCore 使用Sceneform 创建ARApp1、概述 在前面一篇文章 ARCore相关 里已经讨论过一些关于AR 和ARCore的概念了,并基于OpenGL ES实现了一个ARApp 的demo。OpenGL ES是内...
1、概述 前面几篇关于OpenGLES的文章: OpenGL ES 2.0 显示图形(上) OpenGL ES 2.0 显示图形(下) OpenGL ES 3.0(一)综述 ...
@lllaa 看你这提示是这个glutInit已经在mac OS10.9 版本以后被弃用了啊。
OpenGL ES 3.0(五)坐标系1、概述 前面几篇关于OpenGLES的文章: OpenGL ES 2.0 显示图形(上) OpenGL ES 2.0 显示图形(下) OpenGL ES 3.0(一)综述 ...
1、概述 前面几篇关于OpenGLES的文章: OpenGL ES 2.0 显示图形(上) OpenGL ES 2.0 显示图形(下) OpenGL ES 3.0(一)综述 ...
1、概述 前面几篇关于OpenGLES的文章: OpenGL ES 2.0 显示图形(上) OpenGL ES 2.0 显示图形(下) OpenGL ES 3.0(一)综述 ...
1、概述 前面几篇文章OpenGL ES 3.0(一)综述 、OpenGL ES 3.0(二)GLSL与着色器 讨论到可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的...
1、概述 在上一篇文章OpenGL ES 3.0(一)综述 中提到,着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从本质上来说...
1、概述 传统的流IO对于大部分的IO场景, 能适应的比较好。但是, 由于它的阻塞性, 也就是说每一个流的读写都需要占用一个线程。这意味着, 流IO的可伸缩性很差。因此, 就...