多线程可以执行单个任务,使任务得到迅速完成?在java中

kokeuurv  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(333)

我有一个任务,要花很多秒才能完成。所以我想知道是否在java中使用多线程的概念,我可以使用多线程来执行单个任务,这样我的任务就可以很快完成。这是我的例子
螺纹等级

public class ThreadImpl implements Runnable {
    @Override
    public void run() {
        String value="a";
        for(int i=0;i<2147483646;i++) {
            value=value+"b";
        }
        System.out.println("thread task completed "+value);
    }
}

主要类别

public class Main {
public static void main(String[] args) {
  Thread t=new Thread(new ThreadImpl());
  t.start();
 }
}

我想了解是否真的可以创建多个线程并执行该任务 public void run() 同时独自一人?如果可以,如何做到这一点?

w8ntj3qf

w8ntj3qf1#

我可以使用多线程来执行单个任务吗。
这取决于你所说的“任务”是什么意思。你的例子展示了一个函数,当它被线程调用时,它只执行一次计算(注意:这不是一个非常有趣的计算,但它仍然是一个计算。)如果同一个函数被多个线程调用,那么将发生的事情是,每个线程将执行相同的计算,因为这是编写函数的唯一目的。不会节省时间的。
为了让多个线程在解决某个问题时进行协作,您必须编写指示它们协作的代码。您必须编写一个或多个可以执行部分计算的函数;您必须编写代码,将不同的部分分配给不同的线程;您可能需要编写代码,将部分结果组合成单个最终结果。java中没有什么神奇的东西可以自动重新编写单线程代码来为您完成这些任务。你得自己写。

xiozqbni

xiozqbni2#

使用并行流的示例代码段

final String[] value = {"a"};
    Stream.iterate(1,x -> x+1 )
            .limit(10)
            .parallel()
            .forEach(y -> value[0] = value[0] + "b"  );

您可以将限制值更改为所需的数字。在我的并行机上,当限制为100000时,并行机的性能提高了5倍。

相关问题