gpt4 book ai didi

java - 如何在 Android 中并行运行线程

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:27 25 4
gpt4 key购买 nike

我正在尝试并行运行多个线程。我试图通过拥有一个线程的多个实例来实现这一点。我的假设是它会同时执行;然而,线程是按顺序执行的。

这是我测试过的一个简单代码:

new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread A");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread B");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread C");
}
}
}).start();

而且日志显示for循环正在一个接一个的执行

在线程 A 中从 0 计数到 99,然后在线程 B 和线程 C 中计数相同。

基于此,我得出结论,它们并没有像我想象的那样并行执行,而是按顺序执行。

那么Android中如何实现并行执行呢?

最佳答案

我可能是错的,但我认为你的结论是错误的。原因是数到 100 花费的时间如此之短,以至于实例化一个新线程并启动它可能需要更多时间。如果你想确保你的测试是“有效的”,你应该首先实例化所有 3 个线程,然后启动它们,像这样(也将计数器增加到 10k 或 100k):

Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10000; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread A");
}
}
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10000; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread B");
}
}
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10000; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread C");
}
}
t1.start(); t2.start(); t3.start();

这纯粹是为了让您的“测试”工作。您还可以使用 AsyncTask 或其他一些方法。

关于java - 如何在 Android 中并行运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35910866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com