Java中并发和并行的概念

并发和并行既有相似又有区别(微观时间角度)

并发:指两个或者多个事件在同一时间段内发生
并行:指两个或多个事件在同一时间点发生

在操作系统中,当有多个程序运行时,并发性是指在一段时间内宏观上有多个程序在同时运行

(宏观:从用户体验的角度即边玩游戏边听歌),但在单核系统中,每一时刻却仅有一个程序执行,

这就是CPU中时间片的概念,可以想象CPU把运行的一秒钟分成十份,计算机中所有程序,

运行中的程序交替的执行在每一个十分之秒中。当代的计算机都有多个核心每个核心可以单独的去执行程序

所以当计算机CUP有多个核心时并行性的概念在微观上即可视为存在的现象。

原文地址:https://www.cnblogs.com/voryla/p/11066873.html

时间: 2024-10-13 04:14:55

Java中并发和并行的概念的相关文章

Java中的泛型 (上) - 基本概念和原理

本节我们主要来介绍泛型的基本概念和原理 后续章节我们会介绍各种容器类,容器类可以说是日常程序开发中天天用到的,没有容器类,难以想象能开发什么真正有用的程序.而容器类是基于泛型的,不理解泛型,我们就难以深刻理解容器类.那,泛型到底是什么呢? 什么是泛型? 一个简单泛型类 我们通过一个简单的例子来说明泛型类的基本概念.实现原理和好处. 基本概念 我们直接来看代码: public class Pair<T> { T first; T second; public Pair(T first, T se

Java多线程-并发和并行

 1.并发和并行的区别 可由上图形象指出两者的区别: 1)定义: 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行. 并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的. 来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头: 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮

java中并发操作

java的并发操作中,主要在java.util.concurrent包中. 比如常见的ScheduledExecutorService,简单来说,这是一个执行定时任务的线程,可以参考这篇博文:https://blog.csdn.net/wangmx1993328/article/details/80840598,这个类适合于在分布式系统中定时发送心跳的操作.同时还有个简单的Timer和TimerTask类:https://blog.csdn.net/wangmx1993328/article/d

java中并发集合

在 Java 编程的早期阶段,位于 Oswego 市的纽约州立大学(SUNY) 的一位教授决定创建一个简单的库,以帮助开发人员构建可以更好地处理多线程情况的应用程序.这并不是说用现有的库就不能实现,但是就像有了标准网络库一样,用经过调试的.可信任的库更容易自己处理多线程.在 Addision-Wesley 的一本相关书籍的帮助下,这个库变得越来越流行了.最终,作者 Doug Lea 决定设法让它成为 Java 平台的标准部分 -- JSR-166.这个库最后变成了 Tiger 版本的 java.

Java中并发问题整理

1. java中有几种方法可以实现一个线程? 使用Runnable,Callable,Thread或者线程池 2. 如何停止一个正在运行的线程? 可以使用正在运行的线程,支持线程中断,通常是定义一个volatile的状态变量,在运行线程线程中读这个变量,其它线程中修改这个变量 3.sleep和wait有什么区别 sleep方法是在指定的时间内让正在执行的线程暂停执行,但不会释放锁.而wait方法是让当前线程等待,直到其他线程调用对象的notify或notifyAll方法.wait方法会释放掉锁,

服务器中并发与并行的区别

在网络服务器上,并发是指同一时刻能处理的连接数,比如,服务器能建立1000个TCP连接,即服务器同时维护了1000个socket,这个服务器的并发量就是1000,但是服务器可能只有单核或者8核,16核等,总之对这1000个socket连接的处理也是分时来做的.每个socket服务器处理的时间如果是1s,那么该服务器1s内可以处理完1000个请求,如果每个socket处理100ms的话,那么该服务器1s内可以处理10000个请求. 并发连接数:网站有时候报错:“HTTP Error 503. Th

java中堆和栈的概念

1.在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 2.堆内存用来存放由new创建的对象和数组. 3.在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量.让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或者对象的引用变量.(引用变量就相当于是为数组或对象起的名字,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象)

Java中泛型通配符的一点概念

以List<T>为例,通常如果我们想在List中存储某种类型的数据,我们会用下面的语法进行声明和使用: 1 List<String> allMsg = new ArrayList<String>(); 2 allMsg.add("hello"); 3 allMsg.add("world"); 4 5 for(String msg : allMsg) 6 { 7 System.out.println("[类型:"

java中实参与形参的概念

1 形参: 2 3 public void fun(形参类型 形参名){ ... } 4 5 6 7 实参: 8 9 public static void main(String[] args){ 10 11 类 对象名=new 类(); 12 13 对象名.fun(实参名); 14 15 //即 对象名.类方法(实参); 16 17 }