java多线程:1 基础知识
来源:互联网 发布:淘宝电信卡实名认证 编辑:程序博客网 时间:2024/05/20 14:23
线程与进程的区别:
(1) 进程:一个具有独立运行环境的单元,拥有基本的、私有的运行环境和资源,尤其是内存空间。重点在系统调度和单独的单位。
一个进程可以看做我们电脑上运行的一个程序或者应用程序,例如你的chorm浏览器可以看做一个进程。
(2) 线程:轻量型的进程,是CPU调度和分派的基本单位,比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,因此在多个线程访问内存资源(共同对象、资源)的时候,需要特殊处理。在运行时,只是暂用一些计数器、寄存器和栈 。
进程和线程的关系:1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。2、资源分配给进程,同一进程的所有线程共享该进程的所有资源,因此当进程中的一个线程出现OOM,那么这个进程的所有线程都结束运行。3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。4、处理机分给线程,即真正在处理机上运行的是线程。5、线程是指进程内的一个执行单元,也是进程内的可调度实体。
从三个角度来剖析二者之间的区别
1、调度:线程作为调度和分配的基本单位(由cpu进行调度),进程作为拥有资源的基本单位(由系统进行调度)。
2、并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
3、拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于该进程的资源。
为什么使用多线程
- 利用多核CPU
现在的cpu都是多核,如果只有一个线程的话,那么该线程只能运行在单一cpu上,那么就造成了浪费。因此通过运行在不同cpu上的线程,提高效率。
说明:以前操作系统中学的单核的多线程实现,其实是伪多线程,实际在运行的只是一个线程,通过cpu的时间片划分,切换线程执行,实现看起来是多个线程执行。但是因为只有一个cpu,同一时刻只有一个线程运行。
cpu的多核同样带来一个问题,这也算是多线程带来的问题:线程的通讯、公共资源的访问。
例如:同样是卸货,一个人(线程)和多个人(线程)进行卸货,整个过程的执行效率是不一样的,当然这中间可能涉及到多个人怎么获取货物(多线程访问卡车获取货物,大家排队取,还是谁抢到算谁的),但是如何搬运(cpu)就是互相独立的了,把货物存放到另一个地方这个也需要特殊处理(多线程并发访问存货位置,是按照货物序号,还是先到先存放)。 - 解决单核cpu的阻塞,这个主要是单核cpu时,如果只有一个线程,那么当该线程因为网络问题,或者其他原因,
- 便于建模
这是另外一个没有这么明显的优点了。假设有一个大的任务A,单线程编程,那么就要考虑很多,建立整个程序模型比较麻烦。但是如果把这个大的任务A分解成几个小任务,任务B、任务C、任务D,分别建立程序模型,并通过多线程分别运行这几个任务,那就简单很多了。
多线程的最直接的意义就是:最大程度的利用多核cpu。因为cpu调度的底层是线程,因此如果是4核cpu,那么只有一个线程的话,那么永远有3个cpu是浪费的。
阅读全文
0 0
- java多线程基础知识1
- java多线程:1 基础知识
- Java多线程基础知识杂记1
- Java多线程1——基础知识
- Java多线程1——基础知识
- Java多线程编程1----基础知识--守护线程
- Java多线程基础(1)-基础知识
- java多线程编程核心技术1-Thread基础知识
- Java多线程基础知识
- Java多线程基础知识
- java多线程基础知识
- Java多线程基础知识
- Java基础知识:多线程
- Java基础知识:多线程
- Java 基础知识---多线程
- java多线程基础知识总结
- Java基础知识 -- 多线程
- java基础知识---多线程、同步
- Linux下精确控制时间的函数
- 什么是资产负债表?如何规范填写呢?
- 蓝桥杯 算法训练 阿尔法乘积
- 乱序控制(栅栏)
- ramdisk介绍与制作
- java多线程:1 基础知识
- 关于导入外部样式表的目录问题
- 分布式异步编程框架 Koper
- asp.net中一般处理程序和普通类文件使用HttpContext对象
- selenium浏览器chrome驱动对应chrome版本
- JAVA中函数传参的意义
- docker安装mysql
- 协成智慧与福建警察学院签订战略合作协议
- 设备控制接口函数(ioctl 函数)