博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程
阅读量:5855 次
发布时间:2019-06-19

本文共 1218 字,大约阅读时间需要 4 分钟。

多线程概述

进程:
正在运行的程序,是系统进行资源分配和调用的独立单位。
每一个进程都有它自己的内存空间和系统资源。
线程:
是进程中的单个顺序控制流,是一条执行路径
一个进程如果只有一条执行路径,则称为单线程程序。
一个进程如果有多条执行路径,则称为多线程程序。

1:要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的。

2:那么,什么是进程呢?通过任务管理器我们就可以看到进程的存在。
给出一个概念:进程就是正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。
3:多进程有什么意义呢?
单进程计算机只能做一件事情。而我们现在的计算机都可以一边玩游戏(游戏进程),一边听音乐(音乐进程),所以我们常见的操作系统都是多进程操作系统。比如:Windows,Mac和Linux等,能在同一个时间段内执行多个任务。
对于单核计算机来讲,游戏进程和音乐进程是同时运行的吗?不是。
因为CPU在某个时间点上只能做一件事情,计算机是在游戏进程和音乐进程间做着频繁切换,且切换速度很快,所以,我们感觉游戏和音乐在同时进行,其实并不是同时执行的
多进程的作用不是提高执行速度,而是提高CPU的使用率。

4:那么什么又是线程呢?

在一个进程内部又可以执行多个任务,而这每一个任务我们就可以看成是一个线程。线程是程序中单个顺序的控制流,是程序使用CPU的基本单位。

5:多线程有什么意义呢?

多线程的作用不是提高执行速度,而是为了提高应用程序的使用率。
而多线程却给了我们一个错觉:让我们认为多个线程是并发执行的。其实不是。
因为多个线程共享同一个进程的资源(堆内存和方法区),但是栈内存是独立的,一个线程一个栈。所以他们仍然是在抢CPU的资源执行。一个时间点上只有能有一个线程执行。而且谁抢到,这个不一定,所以,造成了线程运行的随机性。
6:那么什么又是并发呢?
大家注意两个词汇的区别:并行和并发。
前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。
后者是物理上同时发生,指在某一个时间点同时运行多个程序。
那么,我们能不能实现真正意义上的并发呢,是可以的,多个CPU就可以实现,不过你得知道如何调度和控制它们。
7:那么,我们来举例说说什么是进程,什么是线程。
扫雷游戏,迅雷下载等。

Java程序运行原理

java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。
思考:
jvm虚拟机的启动是单线程的还是多线程的?

答:JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。

 

 

 

 

 

转载于:https://www.cnblogs.com/zhaoyanhaoBlog/p/9181907.html

你可能感兴趣的文章
Javascript基础学习(2)_表达式和运算符
查看>>
Form_如何通过标准功能查找数据源(概念)
查看>>
C# Hadoop学习笔记(一)—环境安装
查看>>
jtemplate使用笔记
查看>>
js将文字转化为语音并播放
查看>>
uiview 的setAnimationTransition : forView 方法实现翻页效果
查看>>
Ajax请求二进制流并在页面展示
查看>>
delphi 工具
查看>>
Soot生成控制流图
查看>>
如何打开*.zip.001文件
查看>>
Mongodb(1)如何存储以及简介
查看>>
java的Calendar(日历)类 (转)
查看>>
Struts 2 标签库及使用
查看>>
转:将字符串或表达式直接转为C#可执行代码的办法
查看>>
【数学】【P5076】 Tweetuzki 爱整除
查看>>
Yii2实现命名范围scope的自定义查询
查看>>
PHP二维数组指定字段进行排序
查看>>
谈谈git/github
查看>>
[转] vue之computed和watch
查看>>
paper 83:前景检测算法_1(codebook和平均背景法)
查看>>