苏州住房与城乡建设局网站自己做的网站打开太慢

pingmian/2025/10/7 11:56:52/文章来源:
苏州住房与城乡建设局网站,自己做的网站打开太慢,义乌网站建设微信开发,外贸流程中的单证有哪些一#xff0c;简介 Kotlin协程引入了非常强大的异步编程模型#xff0c;通过挂起而不是阻塞来实现并发操作。以下是有关Kotlin协程挂起和阻塞的详细介绍#xff1a; 挂起#xff08;Suspending#xff09;#xff1a; 挂起是指一个协程的执行可以在不阻塞线程的情况下暂…一简介 Kotlin协程引入了非常强大的异步编程模型通过挂起而不是阻塞来实现并发操作。以下是有关Kotlin协程挂起和阻塞的详细介绍 挂起Suspending 挂起是指一个协程的执行可以在不阻塞线程的情况下暂停和恢复。挂起函数是一种能够让协程挂起并释放线程的特殊函数允许其他协程在该协程挂起期间运行。协程可以在执行IO操作、等待网络请求、休眠或执行任何可能导致阻塞的操作时挂起。 阻塞 阻塞是指线程在执行某个操作时被暂停直到该操作完成而不能执行其他任务。在传统的多线程编程中通常会使用阻塞调用如Thread.sleep()或等待I/O操作完成这会导致线程被阻塞浪费了宝贵的资源。 协程的非阻塞特性 Kotlin协程通过将任务挂起到后台线程而不阻塞主线程使得在同一线程上执行多个任务变得更加高效。由于协程不需要一直占用线程所以可以运行大量协程而无需创建太多线程。 使用协程挂起函数 在Kotlin中使用suspend关键字声明挂起函数这允许函数在协程中挂起。 例如suspend fun fetchData(): String是一个可以在协程中挂起的函数它可以执行异步操作而不阻塞线程。 协程调度器 协程的执行受调度器的管理调度器负责决定何时挂起和恢复协程以及在哪个线程上运行它们。通过使用不同的调度器可以控制协程的执行方式例如在主线程、IO线程或自定义线程池中执行。 总之Kotlin协程的挂起机制允许在不阻塞线程的情况下执行异步任务这在编写高效且响应式的并发代码方面非常有用。挂起函数使协程可以在等待I/O或执行其他可能导致阻塞的操作时让出线程以提高应用程序的性能和响应性。 二示例 以下是使用Kotlin协程的示例演示了挂起和阻塞的区别 首先确保你的项目中已经引入了Kotlin协程库以便使用协程。 kotlinCopy codeimport kotlinx.coroutines.* import kotlin.system.measureTimeMillis// 一个挂起函数模拟网络请求 suspend fun fetchData(): String {delay(1000) // 模拟延迟1秒的网络请求return Data from the network }fun main() runBlocking {// 创建一个协程作用域val time measureTimeMillis {val result async { fetchData() } // 启动一个协程来执行网络请求println(Waiting for data...)println(Data received: ${result.await()})}println(Time taken: $time ms) } 上述代码中我们创建了一个挂起函数fetchData()它模拟了一个网络请求使用delay()函数来模拟1秒的延迟。在main函数中我们使用runBlocking创建了一个协程作用域以便执行协程。然后我们使用async启动一个协程来执行fetchData()函数。 现在让我们看看挂起和阻塞的区别 挂起在async中使用await()函数来获取网络请求的结果但在等待网络请求的过程中协程会挂起而不会阻塞整个线程。这意味着其他协程可以在此期间运行而不会浪费线程资源。阻塞如果我们使用传统的阻塞方式例如Thread.sleep(1000)线程将被完全阻塞无法执行其他任务。这会浪费线程资源并降低应用程序的性能。 总之使用协程的挂起机制可以实现非阻塞的并发操作提高了应用程序的性能和资源利用率。而传统的阻塞方式则会浪费线程资源导致应用程序的响应性下降。 三通过Android项目展示挂起和阻塞的区别 在Android项目中演示挂起和阻塞更容易理解 我们之到通过 runBlocking创建一个顶层协程会阻塞所在的线程例如我们在主线程使用runBlocking创建一个需要耗时操作的协程 import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.ang.rxdemo1.databinding.ActivityCoroutine2Binding import kotlinx.coroutines.*class CoroutineActivity2 : AppCompatActivity() {lateinit var binding: ActivityCoroutine2Binding;private var job: Job? nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding ActivityCoroutine2Binding.inflate(layoutInflater)setContentView(binding.root)binding.btnSubmit.setOnClickListener {runBlocking(Dispatchers.IO CoroutineName(顶层协程)) {//协程中有耗时操作需要10S才能执行完成Log.d(TAG,协程开始执行)delay(1000.times(10))Log.d(TAG,协程执行完成)}}} xml布局activity_coroutine2.xml ?xml version1.0 encodingutf-8? androidx.appcompat.widget.LinearLayoutCompat xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenter_horizontaltools:context.xiecheng.CoroutineActivityButtonandroid:idid/btn_submitandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text执行//androidx.appcompat.widget.LinearLayoutCompat 测试连续多次点击”执行”按钮稍等片刻后就会出现ANR导致程序崩溃这就是runBlocking创建的协程阻塞主线程无法执行其他操作导致的用户无响应异常的出现 如果上面代码使用协程挂起函数执行耗时操作不会阻塞主线程的执行 binding.btnSubmit.setOnClickListener { // runBlocking(Dispatchers.IO CoroutineName(顶层协程)) {//协程中有耗时操作需要10S才能执行完成 // Log.d(TAG,协程开始执行) // delay(1000.times(10)) // Log.d(TAG,协程执行完成) // }val coroutineScope CoroutineScope(Dispatchers.Main CoroutineName(协程A))coroutineScope.launch{Log.d(TAG,协程开始执行 ${Thread.currentThread().name} ${coroutineContext[CoroutineName]?.name})delay(10000)//挂起函数挂起当前协程Log.d(TAG,协程执行完成 ${Thread.currentThread().name} ${coroutineContext[CoroutineName]?.name})}} 在多次点击不会阻塞主线所以也不会出现ANR 异常 也可以通过如下代码对比挂起和阻塞的区别 阻塞线程 binding.btnSubmit.setOnClickListener {Thread.sleep(100000)Log.d(TAG,协程执行完成 ${Thread.currentThread().name})} 挂起非阻塞线程 binding.btnSubmit.setOnClickListener {GlobalScope.launch(Dispatchers.Main CoroutineName(协程A)) {Log.d(TAG,协程开始执行 ${Thread.currentThread().name} ${coroutineContext[CoroutineName]?.name})delay(10000)//挂起函数挂起当前协程Log.d(TAG,协程执行完成 ${Thread.currentThread().name} ${coroutineContext[CoroutineName]?.name})}// Thread.sleep(100000) // Log.d(TAG,协程执行完成 ${Thread.currentThread().name})}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费软件制作网站模板一个app一年可以赚多少

Mac下载的软件显示文件已损坏,如何解决文件已损坏问题,让文件可以正常运行 设备/引擎:Mac(11.6)/Mac Mini 开发工具:终端 开发需求:让显示已损坏的文件顺利安装到电脑 大家肯定都遇到过下载…

河北智慧团建网站登录wordpress怎么添加网盘下载

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了…

河南省安阳市建设银行网站绵阳市建设工程质监站网站

目录 背景 项目架构 核心流程1——执行器自动注册 核心流程2——调度任务 特性——分片广播 背景 为什么需要任务调度平台? 单机定时任务 Java中传统的定时任务实现方案,比如JDK 1.3 提供的 Timer、JDK 1.5 提供的 ScheduledExecutorService、Spring 3.0 提…

网站开发成本预算价目表广告有限公司

这种是预定义查询的一种形式 (1)在 Entity 下增加 NamedQuery 定义。 public interface NamedQuery {//query的名称,规则:实体.方法名;String name();//具体的JPQL查询语法String query(); } 需要注意,这…

it培训网站成都网推公司

兄弟,你理解错了。可以看看官方文档。Android的储存空间分两块:Internal storage和External storageInternal storage总是可用的,不需要额外权限,这里的文件默认只能被我们的app所访问。可以通过Context下的getFilesDir()方法获取…

网站建设进度表下载建设部网站不支持360

目录 C/C新冠疫情死亡率 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C新冠疫情死亡率 2020年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 2020年全世界爆发了新冠疫情,请…

石河子规划建设局网站电子商务网站建设任务分解

类型通配符 类型通配符<?> 一般用于接受使用&#xff0c;不能够做添加List<?>&#xff1a;表示元素类型未知的list&#xff0c;它的元素可以匹配任何类型带通配符的List仅表示它是各种泛型List的父类&#xff0c;并不能把元素添加到其中类型通配符上限&#xff1…

备案停止网站杭州网页设计

题目链接 串联所有单词的子串 题目描述 注意点 words[i] 和 s 由小写英文字母组成1 < words.length < 5000可以以 任意顺序 返回答案words中所有字符串长度相同 解答思路 根据滑动窗口哈希表解决本题&#xff0c;哈希表存储words中所有的单词及单词的出现次数&#…

网站开发培训机构哪个好建立站点的作用

昨日&#xff0c;一位能给工程师代码打分的“AI评委”引发了热议。起因是在2019阿里巴巴“83行代码挑战赛”决赛现场&#xff0c;一位运行在云端的AI评委和现场的专家评委、大众评委配合&#xff0c;一起对选手提交的的代码做综合评价。 “AI是否会取代工程师”的话题再次在网络…

深圳网站建设网页制作wordpress修改登录地址

相关具体的开发者与SDK链接如下&#xff1a; GoSDKJavaScript SDK 网页链接 测试网申请链接Github存储库链接开发者网址AIgorand官网Telegram电报群综合白皮书MediumNaver Blog领英Linkedin区块链浏览器INC公示钱包地址基金会公示钱包地址Telegram电报群官方 Github地址 相关…

个人做旅游网站怎样网站开发排名

1. 前言 本篇梳理和总结React中常用的Hook函数。 欢迎大家来到Hook的世界&#xff0c;真的贼好用~ 2. 常用Hook函数 Hook说明示例useState(initialState) 功能&#xff1a;为函数组件添加状态变量&#xff0c;输入可是基本数据类型或引用数据类型&#xff0c;也可以是不带参数…

做网站怎么在国外服务器租用微信小程序怎么制作游戏

基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原 ,输出复原前后图像&#xff0c;PSF频谱结果。程序已调通&#xff0c;可直接运行。 130 matlab盲迭代反卷积IBD (xiaohongshu.com)

天津中冀建设集团有限公司网站做免费网站安全吗

编排 | strongerHuang素材来源 | 电工电气学习1000W的灯泡有多亮&#xff1f; 20000W的灯泡呢&#xff1f;嵌入式专栏11000W灯泡一位手工帝名叫rctestflight&#xff0c;他认为普通白炽灯泡的能耗是LED灯8倍&#xff0c;他自己要做一盏最亮最亮的灯&#xff0c;就选择了LED灯泡…

网站项目实施方案网站重新建设的请示

[转]char * 和字符数组 原文地址&#xff1a;http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注的焦点。它是一个指向int指针。也就是说&#xff1a;i指向一个内存地址&#xff0c;从这个地址开始存储了一个数据。int * i中的int标明…

浙江省嘉兴市建设局网站如何做建议的网站

目录 前言 一、java基础 1.1概述 1.java语言发展史 2.Java语言版本 3.Java语言平台 4.Java语言特点 5.Java语言跨平台原理-可移植性 6.JRE和JDK的概述 7.JDK的下载和安装 8.JDK安装路径下的目录解释 9.path环境变量的作用及配置方式 10.classpath环境变量的作用及…

网站开发昆山xwiki做的网站

重命名 git mv oldFileName newFileName撤销本地仓库和暂存区提交的记录和提交的文件 git reset --hard创建新分支(基于某次提交或者基于某个分支) git checkout -b 分支名 提交id/分支名查看git历史记录 git log 查看git历史记录简约一条 git log --oneline 查看git历史记录简…

电商思维做招聘网站第一成品网站超市

前言 雅意2.0&#xff0c;作为一款专注于中文语境的开源大型语言模型&#xff0c;其在多语言处理方面的能力尤为突出。该模型不仅具有300亿参数规模的庞大体量&#xff0c;还在多个关键领域取得了显著的技术突破。 Huggingface模型下载&#xff1a;https://huggingface.co/wen…

东山县建设官方网站南宁手机网站建设

(8分)将煤粉隔绝空气加强热&#xff0c;除主要得到焦炭外&#xff0c;还能得到下表所列的物质&#xff1a;序号①②③④⑤⑥⑦名称甲烷一氧化碳乙烯苯在家庭中进行的下列实验或做法可行的是()A&#xff0e;用食醋区分食盐和纯碱B&#xff0e;将食盐经溶解、过滤、蒸发来制纯净的…

猎头公司网站建设方案福州室内设计学校

前言&#xff1a; 这里结合走迷宫的例子,重点学习一下QLearning迭代更新算法 0,1,2,3,4 是房间&#xff0c;之间绿色的是代表可以走过去。 5为出口 可以用下图表示 目录&#xff1a; 策略评估 策略改进 迭代算法 走迷宫实现Python 一 策略评估 强化学习最终是为了…

100款不良网站进入窗口软件河口企业网站开发公司

前言 比较水的一场比赛 E题几乎是一本通原题而我还是不会做qwq A - Sagheer and Crossroads 有一个十字路口&#xff0c;给出四个路口的车是否可以左转/右转/直行&#xff0c;并且给出每个路口的行人是否可以通过&#xff0c;求是否出现车和人冲突的情况 阅读理解题&#xff…