博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java Concurrency》读书笔记,Java并发编程实践基础
阅读量:7097 次
发布时间:2019-06-28

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

1. 基本概念

程序,是一组有序的静态指令,是一种静态的概念。程序的封闭性是指程序一旦运行,其结果就只取决于程序本身;程序的再现性是指当机器在同一数据集上重复执行同一程序时,机器内部的动作系列完全相同,最后获得的结果也相同。

进程,是一种活动,它是由一个动作系列组成,每个动作是在某个数据集上执行一段程序,整个活动结果是提供一处系统或用户功能。进程一般由三部分组成:程序、数据集合、进程控制块(PCB)。进程具有并发性和不确定性。

线程,是一个进程内部的顺序控制流。线程本身不能独立运行,必须在进程中执行,使用进程的地址空间。一个进程内部包含多个顺序控制流,或者并发执行多种运算,就是多线程。

创建进程的高消耗(每个进程都有独立的代码与数据空间),进程之间通信不方便(消息机制),进程切换的时间太长这些特性导致了多线程的提出。

进程和程序的区别

进程是程序的一次运行活动,属于一种动态的概念。

一个进程可以执行一个或多个程序。

程序可以作为一种软件资源长期保持着,而进程则是一次执行过程。

2.创建多线程

参考:

3.线程的基本控制

start()

该方法启动线程。

sleep()

该方法暂停执行,可以以毫秒、纳秒指定睡眠时间,但并不保证这些睡眠时间的精确性。中断(interrupt)可以终止睡眠时间。

suspend()

resume()

join()

该方法让一个线程等待另一个线程的完成。如果t1、t2是两个Thread对象,在t1中调用t2.join(),会导致t1暂停执行,直到t2线程的终止。join的重载版允许指定等待的时间,同样,它是不精确的。

interrupt()

该方法中断线程的执行,一般由外部线程(或主线程)调用,自身或者通过try/catch捕获,或者通过循环捕获。

@Overridepublic void run() {    ...    try {        Thread.sleep(10000);    }catch(InterruptedException ex) {        // handle with exception...        return;      }   ...          }
@Overridepublic void run() {    ...    while(!Thread.interrupted) {        // process...    } ...       }

stop()

强迫线程停止执行,已经不赞成使用。

转载地址:http://yuhql.baihongyu.com/

你可能感兴趣的文章
键盘谍影 键盘监视器的原理和防范
查看>>
配置交换机etherchannel
查看>>
活力四射的Windows Embedded Standard 7
查看>>
了解区块链,从挖矿开始
查看>>
【Java学习笔记】java.lang包学习
查看>>
配套自测连载(四)
查看>>
iOS网络编程-解决iCloud文档存储过程中文档冲突问题
查看>>
Java5 并发学习
查看>>
传输信道加密Stunnel配置
查看>>
DHCP服务器如何检测穿过中继代理的IP地址冲突(gratuitous ARP肯定是不行的)
查看>>
恭喜CocoStudio 1.5和Mac版本发布
查看>>
Exchange server 2010系列教程之二 图文安装Exchange 2010
查看>>
玩转CVSNT+TortoiseCVS 版本控制系统(图解)(上)
查看>>
利用CSVDE命令实现域用户账户的批量添加示例
查看>>
解决 Exchange2013提示“出现意外错误,无法处理您的请求”,无法打开OWA和ECP
查看>>
CCNA学习指南(第五版)下载地址
查看>>
LightSwitch中的权限
查看>>
将计算机退出域 脚本
查看>>
windows多线程同步--临界区
查看>>
Linux系统真正的优势以及学习方法
查看>>