一、什么是线程

线程是操作系统能够进行运算调度的最小单位。

它被包含在进程之中,是进程中的实际运作单位。

一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程。

线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。

所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。

多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。

例如,北京地铁与上海地铁是不同的进程,而北京地铁里的13号线是一个线程,北京地铁所有的线路共享北京地铁所有的资源,比如所有的乘客可以被所有线路拉。

二、线程与进程的区别

1.线程共享创建它的进程的地址空间;进程有自己的地址空间。

2.线程可以直接访问其进程的数据段;进程有自己的父进程的数据段副本。

3.线程可以直接与进程的其他线程通信;进程必须使用进程间通信与同级进程通信。

4.新线程很容易创建;新进程需要复制父进程。

5.线程可以对同一进程的线程进行相当大的控制;进程只能对

并发编程——线程——线程的理论和创建以及守护线程相关推荐

  1. java 变量锁_并发编程高频面试题:可重入锁+线程池+内存模型等(含答案)

    对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一个程序 ...

  2. 《Java线程与并发编程实践》—— 1.2 操作更高级的线程任务

    本节书摘来异步社区<Java线程与并发编程实践>一书中的第1章,第1.2节,作者: [美]Jeff Friesen,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  3. java最少有多少线程_【并发编程】一个最简单的Java程序有多少线程?

    一个最简单的Java程序有多少线程? 通过下面程序可以计算出当前程序的线程总数. import java.lang.management.ManagementFactory; import java. ...

  4. java并发编程(十)使用wait/notify/notifyAll实现线程间通信

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17225469 wait()方法:public final void wait()  thr ...

  5. 35、python并发编程之多线程(理论篇)

    一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) 九 在内 ...

  6. 利用线程池为线程创建一个守护线程

    主线程: public class MainThread implements Callable {SimpleDateFormat sdf =new SimpleDateFormat("y ...

  7. 学习日记0904并发编程socketserver模块 进程理论

    基于tcp的并发编程 服务端 import socketserverclass MyTCPLink(socketserver.BaseRequestHandler):def handle(self): ...

  8. P576线程P582多线程P583startP584Runnable创建线程P58子线程应用P587退出P588方法P591守护线程P592线程7大状态P593同步P594互斥锁P596释放锁P598

    576线程-P598作业2 P576线程 P582多线程机制 public class Thread01 {public static void main(String[] args) {//创建Ca ...

  9. Python编程基础:第五十九节 守护线程Daemon Threading

    第五十九节 守护线程Daemon Threading 前言 实践 前言 守护线程是在后台运行的线程,对程序的运行并不重要,你的程序在退出前不会等待守护线程的完成,此类线程的特点是,当程序中主线程及所有 ...

最新文章

  1. 一些性能上的考虑(主要是UITableView)
  2. mysql 排序字段是否需要建索引_MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化)...
  3. mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
  4. 计算机网络基础:ISO/OSI网络体系结构知识笔记​
  5. .NET 中的泛型 101
  6. 8.2-指令周期(学习笔记)
  7. 新闻网页制作源代码_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的
  8. jar文件不能在nokia s60 sdk模拟器中运行
  9. 【】论晚睡晚起的危害
  10. 聊聊SEO与生意的关系,顺带说说百度快照功能下线原因及影响有哪些?
  11. python小游戏开题报告范文_课题开题报告范文
  12. multisim异或门
  13. hibernate 一对多查询 对多的一方进行分页
  14. SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之监控视频实时多屏预览
  15. 出现 CUDA out of memory 的解决方法
  16. 建行u盾单片机可以再次使用吗_Si7021建行U盾19264液晶制作温湿度显示,实物单片机代码开源...
  17. 基于STM32MP1和QT的疫情监控平台
  18. 2021年高压电工新版试题及高压电工试题及解析
  19. 排序算法——快速排序(图解+代码)
  20. php 并发下载文件,PHP 并发下载 - 鸟屁不会的程序猿的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. .NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别
  2. java13 InputStream,Reader
  3. 能在微软的网站找到IeWebcontrols的安装文件吗
  4. 三角网导线平差实例_网平差三角网三边导线网.doc
  5. python 图表 web_Web | Django 与 Chart.js 联用做出精美的图表
  6. 前端参数无法转为后端实体内部类_Java学到什么程度才能叫精通?
  7. 2016秋季阅读计划
  8. 百度笔试题:malloc/free与new/delete的区别
  9. 数据结构与算法一 - 二叉树基础
  10. VMware如何进入安全模式