并发、并行傻傻分不清楚?

2023-11-05 07:18

本文主要是介绍并发、并行傻傻分不清楚?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天,我们正在解决一个问题:

同时的,同时的愚蠢的困惑?线程在其生命周期中经历了什么?

知识给你解答生活中所有困难的问题。

=concurrent和parallel==

并发是指在一定时间内,多任务交替处理的能力。并行性是指同时处理多个任务的能力。

案例:当一个商场的销售员需要面对许多顾客时,有些顾客要求价格,有些顾客要求质量。这时,业务员需要不断地回答客户,不断地改变话题,记住前面的话题,以便他回答。这种方式可以理解为并发的。如果有许多销售人员对应多个客户,那么许多销售人员可以同时回答客户的问题。这条路是平行的。

=thread lifetime=

线程是CPU调度和分配的基本单元。线程可以有自己的操作堆栈、程序计数器、本地变量表和其他资源。它与同一进程中的其他线程共享进程的所有资源。

创建线程有三种方法。首先从线程类继承,如下所示:

第二种方式是实现Runnable接口,如下所示:

public class HandlerThread implements Runnable {@Overridepublic void run() {}}

 建议使用第二种方法,因为继承线程类不符合Richter的替换原则。实现可运行的接口可以使编程更加灵活,公开的细节更少。

public class Demo implements Callable<String> {public static void main(String[] args) throws ExecutionException, InterruptedException {Callable<String> callable=new Demo();FutureTask<String> futureTask=new FutureTask<>(callable);new Thread(futureTask).start();System.out.println(futureTask.get());}@Overridepublic String call() throws Exception {return "demo";}
}

第三种方法使用可调用接口,如下所示:

可调用接口和未来接口的区别在于:

  1. callable指定call(),runnable指定run()。
  2. 可调用任务可以在执行后返回值,而可运行任务不能返回值。
  3. 调用()方法可以引发异常,而run()方法不能引发异常。
  4. 运行可调用任务将生成一个未来对象,该对象表示异步计算的结果。它提供了一种检查计算是否已完成、等待计算完成以及检索计算结果的方法。通过未来的对象,我们可以了解任务的性能,取消任务的执行,并获得任务执行的结果。
  5. Callable是一个类似于runnable的接口。实现可调用接口的类和实现可运行的类是可以由其他线程执行的任务。

线程有五个生命周期,如下所示:

线程五种状态.jpg

线程的生命周期状态为:新状态、就绪状态、运行状态、阻塞状态和终止状态。

  • 新建,即新状态,是指创建线程而不启动线程的状态。
  • runnable,ready state,是在调用start()方法之后运行之前的状态。不能多次调用Start(),否则将引发IllegalStateException。
  • running,run state是执行run()时线程的状态。由于某些因素(如时间、异常、锁、调度等),线程可能会开始运行。
  • 阻塞、阻塞状态,进入此状态的情况包括:同步阻塞(其他线程占用的锁)、活动阻塞(调用线程的某些方法,主动授予CPU执行权限,如sleep()、join()等)和等待阻塞(执行wait()方法)。
  • Dead,终止状态,是运行()执行因异常而结束或退出后的状态。

我在这里说的是创建线程的形式。创建线程的本质是实际创建一个可运行的对象(您可以看到相关的源代码,线程实现可运行的接口,并且只有目标分配是在内部完成的)。在run方法中,仍然执行目标run方法)。线程的start方法是真正的线程创建方法(在内部调用native create square)。为什么不建议继承线程,因为它向外部世界公开了更多的细节?非常感谢你的想法。

这篇关于并发、并行傻傻分不清楚?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/348283

相关文章

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Java之并行流(Parallel Stream)使用详解

《Java之并行流(ParallelStream)使用详解》Java并行流(ParallelStream)通过多线程并行处理集合数据,利用Fork/Join框架加速计算,适用于大规模数据集和计算密集... 目录Java并行流(Parallel Stream)1. 核心概念与原理2. 创建并行流的方式3. 适

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

Java并发编程之——BlockingQueue(队列)

一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空

java线程深度解析(五)——并发模型(生产者-消费者)

http://blog.csdn.net/Daybreak1209/article/details/51378055 三、生产者-消费者模式     在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品