文档章节

线程01

穿山
 穿山
发布于 2017/07/11 21:44
字数 740
阅读 16
收藏 0

进程:当计算机在正常工作时,你在计算机中打开的多个程序,这其中每个程序就相当于一个进程,CPU分别给他们分配时间片,轮到哪个程序的时间片时,CPU就去处理他,因为CPU运算速度非常快,所以我们会认为程序是同时运行,但实际上CPU是轮流处理相应程序的时间片的,我们可以认为这个是并发的过程。

线程:线程是存在于进程中的,一个进程可以包含多个线程。

线程不是越多越好,因为调用线程也要耗费时间的,如果一个任务执行时间较长那么可以使用多线程,如果一个任务执行时间很短,那么就使用多线程就得不偿失了。

一般而言CPU有几个内核那么就代表有几个线程。

(单核CPU)并发:当CPU在执行一个任务时候,此时有一个新的任务进来时,CPU会分配给两个任务时间片,轮流执行两个任务,JAVA就是支持并发的。

(多核CPU)并行:当一个CPU有两个或两个以上内核时,那么CPU可以一个线程执行一个任务,这样的两个任务真正的同时进行被称为并行。

串行:当系统在执行一个任务时,此时又新增加一个任务,那么系统执行完当前任务后才会执行下一个任务,这样被称为串行。

线程总共有七种状态

sleep方法和notify的区别,sleep方法不会释放CPU资源,但wait方法会释放出CPU资源。

sleep方法结束后线程继续往下执行,但wait方法的话需要有notify来唤醒,之后重新进入就绪阶段。

线程在执行任务时,当该任务需要花较多时间时,此时称为阻塞状态。

一般当IO执行读取任务时,遇到大文件需要较长时间处理任务此时IO处于阻塞状态。

run方法和start方法的区别在于调用start方法时线程处于等待就绪状态,而run方法则是指当CPU处理该线程时候会执行线程中的run方法。

线程的加入使用join方法,指在A线程中插入B线程并要求系统先执行B线程,等B线程结束后再执行A线程。

线程的中断我们一般使用三种方法

1 stop该方法是比较旧的方法现在已经不推荐使用。

2 使用死循环然后设置相应的标记当满足条件时跳出循环。

3 interrupt方法

yield方法是该线程先让出CPU资源让其他线程先处理,自己重回就绪状态等待CPU下次执行它。

© 著作权归作者所有

上一篇: 浅谈IO流
下一篇: 异常
穿山
粉丝 9
博文 33
码字总数 18655
作品 0
南京
私信 提问
SOCKET是多线程安全的吗? [问题点数:40分,结帖人CSDN]

我想采用两个线程对同一个SOCKET进行I/O操作,一个线程专门负责recv(),另一个专门负责send(),用的是TCP协议。既然是两个线程,那么需要线程保护吗。这两个线程是对同一个SOCKET操作的,...

付翔
2013/01/26
0
0
IntelliJ IDEA 使用教程十二 - Debug 调试多线程程序

新建 MyRunnable 创建三个线程 打断点 Debug 运行 MyTest.main() 下文默认线程的执行顺序为:线程1->线程2->线程3。(实际情况不一定如此) 你会发现 idea 会停在断点处,上面显示当前线程为...

皂白
2018/01/11
349
0
打通Linux脉络系列:进程、线程和调度-宋宝华-专题视频课程

打通Linux脉络系列:进程、线程和调度—1720人已学习 课程介绍 本课程分成4个组成部分,每次课60分钟,每次课后留下3-4个练习题,可以在Linuxer公众号留言讨论答案和做题心得。 第一部分:深...

21cnbao
2017/09/14
0
0
一个简答的生产者-消费者多线程模型

运行结果: 2、第二种情况,把两个sleep的时间调换下,也就是produce后,sleep(100),consumer后,sleep(500),也就是取消息慢,生产消息快。这种情况就出现了问题,如果队列满了,produce线程...

射鷄师行知
2016/02/17
1K
0
Android中Message,MessageQueue,Looper,Handler详解+实例

一、几个关键概念 1、MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。 创建一个线程的时候,并不会自动创...

假装是大神
2012/03/17
858
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习之模块

1、 stub_status模块: 用于展示nginx处理连接时的状态。 配置语法如下: Syntax:stub_status;Default:默认没有配置Context:server、location 可以编辑default.conf,加上如下配置: ...

码农实战
52分钟前
4
0
MySQL,必须掌握的6个知识点

目录 一、索引B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化使用 Explain 进行分析 优化数据访问 重构查询方式 三、存储引擎InnoDB MyISAM 比较 四、数据类...

李红欧巴
56分钟前
4
0
堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
今天
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
今天
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部