文档章节

多线程

 寸心难寄
发布于 2017/07/25 16:54
字数 458
阅读 3
收藏 0

1. 多线程

1.1进程

进程是一个实体。每一个进程都有它自己的地址空间。进程是一个“执行中的程序”。

1.2线程

一个进程中可以包含若干个线程 

1.3线程与进程的区别

1.3.1地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
1.3.2通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
1.3.3调度和切换:线程上下文切换比进程上下文切换要快得多。

1.3.4在多线程OS中,进程不是一个可执行的实体。

eg: 

QQ 进程

给范冰冰聊天 线程

给普京聊天 线程

1.4线程的状态

新建态,就绪态,运行态,阻塞态,消亡态

示意图

 

1.5创建线程的方式

1.5.3.1实现Runnable接口,重写run方法

1.5.3.2直接继承Thread类

1.5.3.3实现Runnable接口后使用线程池ThreadPool

    eg: 企业中推荐使用该方法去创建线程,想了解具体请查看【java线程池】

           https://my.oschina.net/u/2505908/blog/1476242

    ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

1.5.3.4实现Callable接口

1.6多线程安全问题

1.6.1产生原因

多个线程可以利用所拥有的共享资源

1.6.2解决思想

就是将多个 [ 操作共享数据 ]的线程 代码封装起来,

当有线程在执行这些代码的时候,其他线程是不可以参与运算的,

必须要当前线程把这些代码都执行完毕后,其他线程才可以参与运算。

比如synchronized代码块

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 458
作品 0
海淀
程序员
私信 提问

暂无文章

前端杂谈: 如何实现一个 Promise?

前端杂谈: 如何实现一个 Promise? 首先, 什么是 Promise? A promise is an object that may produce a single value some time in the future: either a resolved value, or a reason that i......

ssthouse_hust
9分钟前
1
0
Unsaft类

Unsafe类提供了硬件级别的原子操作,主要提供了以下功能 1、通过Unsafe类可以分配内存,可以释放内存; allocateMemory 分配内存 reallocateMemory 扩充内存 freeMemory 释放内存 2、可以定位...

器石_
9分钟前
1
0
git常用命令

首先打开git bash方式可以直接鼠标右击 或者在开始菜单(windows系统,苹果暂时不要问我,等我有钱买苹果电脑告诉你们0.0) 打开界面如下 1.查看远程仓库地址 git remote -v 2.创建本地分支 ...

熊小熊会写代码哦
20分钟前
2
0
离屏Canvas — 使用Web Worker提高你的Canvas运行速度

现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了! Canvas 是一个非常受欢迎的表现方式,同时也是WebGL的入口。它能绘制图形,图片,展示动画,甚至是处理视频内容。它经常被用...

嫣然丫丫丫
22分钟前
2
0
SpringBoot 整合 BeetlSQL

SpringBoot 整合 BeetlSQL 1. beetlsql介绍 BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应...

Jeff_Regan
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部