gpt4 book ai didi

Java 多线程 - 最佳实践

转载 作者:行者123 更新时间:2023-12-03 02:41:30 26 4
gpt4 key购买 nike

我无法理解老师的多线程方法。好吧,在展示我们的两个示例之前,我必须说他正在教一群​​新手(我猜也包括我^.^),所以他可能选择了一种易于理解的多线程方法。另外,我没有去听他的类(class),但我有他的脚本,其中写着以下内容:

他是这样进行多线程的:

class MyThread implements Runnable {

Thread t;

MyThread() {

t = new Thread(this, "Demo");
t.start();
}

public void run() {

try {

for (int i = 5; i > 0; i--) {

System.out.println("Child-Thread:" + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted");
}
System.out.println("Child finished");
}

}

我发现这样做更干净:

public class Aufg1 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

MyThread t1 = new MyThread(1);

ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);
executor.schedule(t1, 1, TimeUnit.SECONDS);
}

static class MyThread implements Runnable {

int number;

public MyThread(int number) {
this.number = number;
}

@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 5; i > 0; i--) {
System.out.println("Thread " + number + ": " + i);
}
}


}
}

别担心我为什么使用大小为 5 的线程池。我需要它来进行另一项练习。另外,在这个示例中,我可以使用 ThreadPool 进行单次执行。

差别大吗?有没有更干净的方法?我知道还有一些其他多线程方法,尽管我在这里只展示了一种。

谢谢!

最佳答案

我不会将可运行类命名为名称中带有线程的名称,这有点令人困惑。

除此之外,您正在使用 java 并发包,他正在使用该包构建的较低级别线程类。可能是因为一个人必须先学会走路,然后才能学会运行。 :)

关于Java 多线程 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17018507/

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