Kotlin的语法糖 thread { } 会运行两次的问题【重大BUG预警!】
来源:互联网 发布:天涯明月刀心法数据 编辑:程序博客网 时间:2024/05/16 03:55
1.thread { } 问题的发现
thread { val token = "inapp:com.myart.kotlin:android.test.purchased" val response = mService?.consumePurchase(3, packageName, token) TLog.l("把已在库存中的商品,进行消耗 $response") ////惊天巨坑,重大BUG预警!!! thread { }语法糖,会自动开启线程启动! }.start()
如上代码——>写完 thread { }后加上 .start() 方法,会执行两遍 TLog.l() 方法!!!
art.kotlin.com:Geek: 把已在库存中的商品,进行消耗 0
art.kotlin.com:Geek: 把已在库存中的商品,进行消耗 0
2.问题的缘由
点进去看thread { }的源码
public fun thread(start: Boolean = true, isDaemon: Boolean = false, contextClassLoader: ClassLoader? = null, name: String? = null, priority: Int = -1, block: () -> Unit ): Thread { val thread = object : Thread() { public override fun run() { block() } } if (isDaemon) thread.isDaemon = true if (priority > 0) thread.priority = priority if (name != null) thread.name = name if (contextClassLoader != null) thread.contextClassLoader = contextClassLoader if (start) thread.start() return thread}
可见,默认是自动自动的!并且会返回 thread的对象本身。
所以这里就非常容易出错。
3.为了防止将来的隐患,赶紧在项目中 Ctrl + Alt +F 进行排查吧~
阅读全文
0 0
- Kotlin的语法糖 thread { } 会运行两次的问题【重大BUG预警!】
- 关于Session重大的BUG?
- C++语言的重大bug
- 两次会的总结
- kotlin的基础语法
- 线程Thread Sleep(0)的意义重大
- webquery 一个bug的重大发现!
- Delphi MIDAS 的重大BUG ---DelphiBBS
- phpStudy 发现存在重大的bug
- 关于struts2中action请求会执行两次的问题
- 关于struts2中action请求会执行两次的问题
- 关于struts2中action请求会执行两次的问题
- 关于struts2中action请求会执行两次的问题
- 关于struts2中action请求会执行两次的问题
- 关于struts2中action请求会执行两次的问题
- Kotlin第二章:Kotlin 的基本语法
- zepto.js tap 会执行两次的bug以及 Uncaught TypeError
- 解决springboot中kotlin语法$失效的问题
- hdu 5919 主席树(区间不同数个数+区间第k个数)
- Codeforces 841D Leha and another game about graph(dfs)
- hdoj 1754 I Hate It
- 获取浏览器地址栏ip
- CentOS安装PHP
- Kotlin的语法糖 thread { } 会运行两次的问题【重大BUG预警!】
- Qt中layout()->setSizeConstraint(QLayout::SetFixedSize);崩溃的问题
- 7.4
- C++类构造函数初始化列表详解
- 算法提高 林丹大战李宗伟
- XTU1255 勾股数
- TLS
- 20171130学习笔记之DDL、DML和DCL之见的区别
- 自定义view画太极图