Java中并行和并发有什么区别?

本文通过Java代码示例解释了并行和并发的区别。在Java中,并行是指多个线程在多个处理器上同时执行,而并发则涉及同一处理器上的线程交替执行。示例中,使用ExecutorService演示了并发执行,通过创建线程对象展示了并行执行。并用Thread.sleep模拟了任务执行时间。
摘要由CSDN通过智能技术生成

        在Java中,并行和并发也有类似于计算机科学中的概念。在Java中,并行通常涉及到多个线程在多个处理器上同时执行,而并发则涉及到多个线程在同一处理器上交替执行。

  下面是一个简单的Java代码演示,并行和并发的区别:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
  public static void main(String[] args) {
    // 并发演示
    ExecutorService executor = Executors.newFixedThreadPool(2);
    executor.execute(() -> {
        System.out.println("线程1开始执行");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程1执行完毕");
    });
    executor.execute(() -> {
        System.out.println("线程2开始执行");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程2执行完毕");
    });
    executor.shutdown();

    // 并行演示
    Thread t1 = new Thread(() -> {
        System.out.println("线程1开始执行");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程1执行完毕");
    });
    Thread t2 = new Thread(() -> {
        System.out.println("线程2开始执行");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程2执行完毕");
    });
    t1.start();
    t2.start();
    try {
        t1.join();
        t2.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
  }
}

  在上面的代码中,我们创建了一个ExecutorService对象,使用newFixedThreadPool方法创建了一个包含两个线程的线程池。我们向这个线程池中提交两个任务,这两个任务会交替执行,但是它们是在同一个处理器上执行的,这就是并发。当然,在执行这些任务时,我们使用了Thread.sleep方法来模拟任务执行的时间。

  另外一个演示并行的部分,我们使用了两个线程对象t1和t2,每个线程对象执行一个任务,它们会在不同的处理器上执行。我们使用了Thread.join方法来等待这两个线程完成任务的执行。

  在这两个演示中,我们可以看到,并行和并发的区别在于它们是在不同的处理器上执行还是在同一个处理器上交替执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值