- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Kotlin 中编写了这段代码,以使用 Coroutines 下载一些 API 信息来下载数据。但是,代码显示了许多警告,将消息声明为“ 不适当的阻塞方法调用 ”。
这是代码:
class DownloadInfoClass {
private lateinit var url: URL
private lateinit var httpURLConnection: HttpURLConnection
private lateinit var result: String
private lateinit var inputStream: InputStream
private lateinit var inputStreamReader: InputStreamReader
private var dataMap: MutableMap<String, Any> = mutableMapOf()
private fun downloadMethod(urls: String){
CoroutineScope(IO).launch {
try {
url = URL(urls)
httpURLConnection = url.openConnection() as HttpURLConnection
inputStream = httpURLConnection.inputStream
inputStreamReader = InputStreamReader(inputStream)
var data: Int = inputStreamReader.read()
while (data != -1){
val current: Char = data.toChar()
result += current
data = inputStreamReader.read()
}
}
catch (e: Exception){
e.printStackTrace()
}
}
Log.i("Result: ", result)
}
}
出现此问题的具体区域是:
URL(urls)
openConnection()
read()
最佳答案
问题是,协程仅构建为 暂停而不是阻塞线程。这意味着,多个协程可以在同一个线程上运行。当使用阻塞方法时,它们会阻塞整个线程并且可能会阻止其他协程运行。因此,这样做通常是不好的做法。
由于您显然需要调用这些方法,因此请使用尝试为每个协程创建新线程的调度程序,例如 Dispatchers.IO
(专为这些操作而设计,请参阅 documentation )。为此,只需使用 withContext
包装阻塞调用即可。 .
withContext(Dispatchers.IO) {
// your blocking calls
}
我希望我能帮上忙!
关于android - 谁能解释为什么这些 "Inappropriate blocking method call"警告会从我的代码中弹出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62769997/
我有一个在 AIX 机器中运行的 Perl 脚本。 脚本尝试从某个目录打开文件,但无法读取该文件,因为文件没有读取权限,但我收到另一个错误,指出设备的 ioctl 不合适。 它不应该说类似没有文件读取
我尝试获取我想要使用的接口(interface)的 mac 地址。 我使用这段代码来这样做,但我总是收到错误消息“Inappropriate ioctl for device" 我已经尝试使用不同的套
我正在尝试添加一个具有 ar_hdr 格式的新文件成员,并将其放在存档中最后一个元素之后。我的代码可以编译,但是当我想使用 ar -t 命令查看文件名时,我收到一条错误消息: ar: hello.a:
我收到这个错误 BLKRASET: Inappropriate ioctl for device 尝试运行时 sudo blockdev --setra 256 /data 在我的 Linux 服务器
我正在尝试设置 gpg-agent 转发,以便通过 ssh 使用通行证( https://www.passwordstore.org )。 本地和远程主机上的 gpg 版本 2.2.9,按说明安装:
我只是根据guide在我的Debian 7系统上安装了Docker。当尝试通过docker -d启动Docker守护程序时,我收到以下输出: INFO[0000] +job serveapi(unix
您好,我收到此错误:ioctl:设备的 ioctl 不合适如下所示的 ioctl() 调用。 fd = open(mount, O_RDONLY); destid = ioctl(fd, TRACEF
我只想将视频转换为帧图像。 使用这个简单的代码 import cv2 vidcap = cv2.VideoCapture('gog.mp4') success,image = vidcap.read(
当我尝试在协程内建立 BT 连接时收到警告。 我检查过 this SO post ,但这只是抽象的理论创造,没有物质代码。那里的一个答案提到标题中的警告应根据具体情况进行处理,所以这是我的情况。有谁知
我在 Kotlin 中编写了这段代码,以使用 Coroutines 下载一些 API 信息来下载数据。但是,代码显示了许多警告,将消息声明为“ 不适当的阻塞方法调用 ”。 这是代码: class Do
我目前正在尝试更多地利用 kotlin 协程。但我面临一个问题:在这些协程中使用 moshi 或 okhttp 时,我收到警告: “不适当的阻塞方法调用” 解决这些问题的最佳方法是什么?我真的不想不合
我将它添加到代码中的两个位置 Flux.empty() .collectList() .block(); 在一种情况下,IntelliJ 会突出显示 .block() 并显示错误消息
这个典型的“route add default gw IP”程序给我错误: SIOCADDRT 失败:设备的 ioctl 不合适 我执行了 ifconfig 来验证接口(interface)名称。有没
我一直在尝试使用 OpenCV 从 Java 文件中读取视频。我在 Ubuntu 上运行 OpenCV 4.0.0。目前我一直在尝试这样做: VideoCapture videoCapture = n
我正在开发一个伪终端库。该代码是用 C 代码实现的,该代码由基于 Web 的终端使用。只要我不使用 sudo 或登录,代码就可以工作。 这是我在 Mac 上运行服务器时遇到的错误: sh-3.2$ s
在 OSX 上启动 hadoop 资源管理器时,出现以下错误: bash-3.2$ start-yarn.sh starting yarn daemons starting resourcemanag
perl script.pl --f1="t1" --f2="t2" --f3="t4" --f4 \$f1, 'f2=s' => \$f2, 'f3
我正在编写用作伪驱动程序的 Linux 内核模块 (LKM) - 我无法弄清楚如何在 LKM 之间进行 IOCTL 调用 (wait.c)和用户级程序 (user.c)。 设备驱动程序的魔数(Magi
【现象】 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last
在协程中调用 OkHTTP 客户端的正确方法是什么? CoroutineScope(IO).launch { val request = Request
我是一名优秀的程序员,十分优秀!