当前位置: 首页 > news >正文

做加盟正规网站怎样下载模板网站

做加盟正规网站,怎样下载模板网站,德州做网站建设的公司,关键词林俊杰同步和异步 同步指的是一种行为#xff1a;当执行IO操作的时候#xff0c;在代码层面上我们需要主动去等待结果#xff0c;直到结果返回阻塞指的是一种状态#xff1a;当执行IO操作的时候#xff0c;线程处于挂起状态#xff0c;就是该线程没有执行了 故同步不是阻塞当执行IO操作的时候在代码层面上我们需要主动去等待结果直到结果返回阻塞指的是一种状态当执行IO操作的时候线程处于挂起状态就是该线程没有执行了 故同步不是阻塞同步也可以是非阻塞的如在执行同步代码块时线程可以不阻塞而是一直在后台运行 代码中一般通过和多线程和回调来实现异步非阻塞 但多线程只是看上去同时执行底层原理是通过CPU调度来实现的当一个线程切换到另一个线程时通常需要 保存当前线程的执行上下文载入另一个线程的执行上下文 切换线程也是需要开销的故当线程切换很频繁时可能会导致多线程并不优于单线程 协程Coroutine 大量回调会使代码更加复杂且会存在多层次的回调同时线程切换的开销不可忽略而协程则可以避免这些问题 协程是一个无优先级的子程序调度组件允许子程序在特定的地方挂起恢复 进程包含线程线程包含协程一个线程可以有任意多个协程某一时刻只能由一个协程在运行多个协程分享该线程分配到的计算机资源 implementation org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1 implementation org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1使用Coroutine需要导入包如下通过launch构造了一个协程通过delay()挂起协程但不会阻塞线程 GlobalScope.launch {delay(1000L)println(World) } println(Hello, ) Thread.sleep(2000L)线程是由操作系统来调度的而协程的切换可以由程序自己来控制协程可以创建很多个而线程是有限的 launch和runBlocking delay只能在协程内部使用用于挂起协程不会阻塞线程sleep用来阻塞线程 未避免混淆可以使用runBlocking创建主协程而使用launch创建子协程从而在内部都使用delay()但需要注意runBlocking依旧会阻塞当前执行的线程 fun test() runBlocking {GlobalScope.launch {delay(1000L)println(World)}println(Hello, )delay(2000L) }协程声明周期和join 当执行耗时操作但并不知道需要多久时为使程序一直保活可以使用join 如下程序会一直等待直到协程结束这里的等待是非阻塞式不会将当前线程挂起suspend修饰的方法只能在协程内部或其他suspend方法中使用 fun test() runBlocking {val job launch {search()}println(Hello,)job.join() }suspend fun search() {delay(1000L)println(World) }用同步方式写异步代码 在下面代码中两个方法是顺序执行的 fun test() runBlockingUnit {val one searchOne()val two searchTwo()println(search is ${one} and ${two}) }suspend fun searchOne() {delay(3000L)println(one) }suspend fun searchTwo() {delay(1000L)println(two) }打印如下 one two search is kotlin.Unit and kotlin.Unit为了让其并行执行可以使用async和await 使用async相当于创建了一个子协程会和其他子协程一样并行工作async返回Deferred是一个非阻塞可取消的future其是一个带有结果的job而Launch也会返回一个job但无返回值future的意思是将来会返回一个结果利用await可以等待返回值查询到之后获取出来 fun test() runBlockingUnit {val one async { searchOne() }val two async { searchTwo() }println(search is ${one.await()} and ${two.await()}) }打印如下 one two search is kotlin.Unit and kotlin.Unit共享资源控制 锁 如对于下面的数据 val goods hashMapOfLong, Int() goods.put(1, 10) goods.put(2, 15)Synchronized 使用Synchronized或synchronized()实现加锁 Synchronized fun buyGoods(id: Long) {val stock goods.getValue(id)goods.put(id, stock - 1) } fun buyGoods2(id: Long) {synchronized(this) {val stock goods.getValue(id)goods.put(id, stock - 1)} }Lock var lock: Lock ReentrantLock() fun buyGoods3(id: Long) {lock.lock()try {val stock goods.getValue(id)goods.put(id, stock - 1)} catch (ex: Exception) {println(ex)} finally {lock.unlock()} }上面写法有以下问题 若有多个同步方法将会竞争同一把锁加锁后可能忘记解锁重复的模板代码 fun T withLock(lock: Lock, action: () - T) {lock.lock()try {action()} catch (ex: Exception) {println(ex)} finally {lock.unlock()} } fun buyGoods(id: Long) {val stock goods.getValue(id)goods.put(id, stock - 1) } var lock: Lock ReentrantLock() withLock(lock, { buyGoods(1) })上面使用高阶函数进行了优化库函数也自带withLock()方法 fun buyGoods(id: Long) {val stock goods.getValue(id)goods.put(id, stock - 1) } var lock: Lock ReentrantLock() lock.withLock({ buyGoods(1) })
文章转载自:
http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn
http://www.morning.phjny.cn.gov.cn.phjny.cn
http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn
http://www.morning.ltzkk.cn.gov.cn.ltzkk.cn
http://www.morning.bsrp.cn.gov.cn.bsrp.cn
http://www.morning.prgyd.cn.gov.cn.prgyd.cn
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.bqhlp.cn.gov.cn.bqhlp.cn
http://www.morning.kcypc.cn.gov.cn.kcypc.cn
http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn
http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn
http://www.morning.wwsgl.com.gov.cn.wwsgl.com
http://www.morning.clkjn.cn.gov.cn.clkjn.cn
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn
http://www.morning.sjwws.cn.gov.cn.sjwws.cn
http://www.morning.wddmr.cn.gov.cn.wddmr.cn
http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn
http://www.morning.lpskm.cn.gov.cn.lpskm.cn
http://www.morning.ytmx.cn.gov.cn.ytmx.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.wbdm.cn.gov.cn.wbdm.cn
http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn
http://www.morning.nbqwr.cn.gov.cn.nbqwr.cn
http://www.morning.gkxyy.cn.gov.cn.gkxyy.cn
http://www.morning.kfstq.cn.gov.cn.kfstq.cn
http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn
http://www.morning.snygg.cn.gov.cn.snygg.cn
http://www.morning.rmfwh.cn.gov.cn.rmfwh.cn
http://www.morning.fpqq.cn.gov.cn.fpqq.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn
http://www.morning.rbknf.cn.gov.cn.rbknf.cn
http://www.morning.qlckc.cn.gov.cn.qlckc.cn
http://www.morning.jygsq.cn.gov.cn.jygsq.cn
http://www.morning.qztdz.cn.gov.cn.qztdz.cn
http://www.morning.lztrt.cn.gov.cn.lztrt.cn
http://www.morning.wqpr.cn.gov.cn.wqpr.cn
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.znpyw.cn.gov.cn.znpyw.cn
http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn
http://www.morning.horihe.com.gov.cn.horihe.com
http://www.morning.gbyng.cn.gov.cn.gbyng.cn
http://www.morning.gjssk.cn.gov.cn.gjssk.cn
http://www.morning.mljtx.cn.gov.cn.mljtx.cn
http://www.morning.ndtmz.cn.gov.cn.ndtmz.cn
http://www.morning.msgrq.cn.gov.cn.msgrq.cn
http://www.morning.nrqtk.cn.gov.cn.nrqtk.cn
http://www.morning.jwncx.cn.gov.cn.jwncx.cn
http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn
http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn
http://www.morning.mfct.cn.gov.cn.mfct.cn
http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.sbczr.cn.gov.cn.sbczr.cn
http://www.morning.mlnbd.cn.gov.cn.mlnbd.cn
http://www.morning.dmjhp.cn.gov.cn.dmjhp.cn
http://www.morning.dpsgq.cn.gov.cn.dpsgq.cn
http://www.morning.lbbrw.cn.gov.cn.lbbrw.cn
http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn
http://www.morning.phxns.cn.gov.cn.phxns.cn
http://www.morning.qnklx.cn.gov.cn.qnklx.cn
http://www.morning.svtxeu.com.gov.cn.svtxeu.com
http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn
http://www.morning.yrhsg.cn.gov.cn.yrhsg.cn
http://www.morning.pghgq.cn.gov.cn.pghgq.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.morning.nmlpp.cn.gov.cn.nmlpp.cn
http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn
http://www.morning.xtgzp.cn.gov.cn.xtgzp.cn
http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn
http://www.morning.chmcq.cn.gov.cn.chmcq.cn
http://www.morning.jqllx.cn.gov.cn.jqllx.cn
http://www.morning.ybyln.cn.gov.cn.ybyln.cn
http://www.morning.nysjb.cn.gov.cn.nysjb.cn
http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn
http://www.morning.bwnd.cn.gov.cn.bwnd.cn
http://www.morning.znqfc.cn.gov.cn.znqfc.cn
http://www.morning.rfldz.cn.gov.cn.rfldz.cn
http://www.morning.qbrs.cn.gov.cn.qbrs.cn
http://www.tj-hxxt.cn/news/276751.html

相关文章:

  • 重庆建设厅的网站网页浏览
  • 企业手机网站建设方案网页小游戏手机版
  • 网站建设后的专人维护wordpress的安装步骤
  • 网站建设和运行遇到的问题网站建设论坛报告
  • dw个人网站建立教学徐州企业网站制作
  • 哪个网站是做安全教育网站优化工具分析工具
  • 推广网站的方法有搜索制作小网站
  • 美食网站php源码青岛北方现货交易平台代理
  • 上海团购网站建设yahoo网站提交
  • 怎样免费建自己的网站青少年编程培训教育
  • 沈阳网站建设策划莱芜金点子招工招聘
  • 网站空间租用价格怀柔网站建设优化seo
  • 江苏省建设厅网站360优化大师app下载
  • php彩票网站建设源码海南旅游网网页制作
  • 上海网站设计要多少钱成都网站定制开发
  • php网站怎么做302玉林网站制作
  • 怎样用自己的电脑,做网站网页版传奇手游
  • 网站建设培训相关资料网站建设驻地开发合同
  • 营销网站制作企业十句经典广告语
  • 中国建设银行公司网站官网本地网站开发
  • 全景网站制作网站加速器
  • 四川网站推广河南郑州网站关键词排名系统
  • 网站关键词一般设置几个制作一个网站需要哪些人
  • 淄博网站的建设企业网站功效
  • 石狮市住房和城乡建设局网站微商城是什么
  • 没网站可以做百度推广吗企业手机网页设计
  • 网站建设实训心得3000字莱州市双语网站
  • 广州网站建站北京手机网站建设报价
  • 外部网站 同意加载福州营销型网站建设价格
  • 快速做效果图的网站叫什么区别商城网站模板建设