文档章节

多线程

 寸心难寄
发布于 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
海淀
程序员

暂无文章

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
15
4
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部