1. 基本概念

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

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

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

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

进程和程序的区别

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

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

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

2.创建多线程

参考:

Java:多线程,分别用Thread、Runnable、Callable实现线程,了解区别

Java:多线程,线程池,用Executors静态工厂生成常用线程池

Java:多线程,线程池,ThreadPoolExecutor详解

3.线程的基本控制

start()

该方法启动线程。

sleep()

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

suspend()

resume()

join()

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

interrupt()

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

@Override
public void run() {
...
try {
Thread.sleep(10000);
}catch(InterruptedException ex) {
// handle with exception...
return;
}
  ...

}
@Override
public void run() {
...
while(!Thread.interrupted) {
// process...
}
 ... }

stop()

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

《Java Concurrency》读书笔记,Java并发编程实践基础的更多相关文章

  1. Java并发编程的艺术读书笔记(2)-并发编程模型

    title: Java并发编程的艺术读书笔记(2)-并发编程模型 date: 2017-05-05 23:37:20 tags: ['多线程','并发'] categories: 读书笔记 --- 1 ...

  2. Java并发编程的艺术读书笔记(1)-并发编程的挑战

    title: Java并发编程的艺术读书笔记(1)-并发编程的挑战 date: 2017-05-03 23:28:45 tags: ['多线程','并发'] categories: 读书笔记 --- ...

  3. Java 并发编程实践基础 读书笔记: 第三章 使用 JDK 并发包构建程序

    一,JDK并发包实际上就是指java.util.concurrent包里面的那些类和接口等 主要分为以下几类: 1,原子量:2,并发集合:3,同步器:4,可重入锁:5,线程池 二,原子量 原子变量主要 ...

  4. Java 并发编程实践基础 读书笔记: 第二章 构建线程安全应用程序

    1,什么是线程安全性? 简单概括就是一个类在多线程情况下能安全调用就是线程安全 2,Servlet  的线程安全性  默认是非线程安全的,写servlet代码的时候需要注意线程安全,注意同步 3,vo ...

  5. 《Effective Java》读书笔记 - 10.并发

    Chapter 10 Concurrency Item 66: Synchronize access to shared mutable data synchronized这个关键字不仅保证了同步,还 ...

  6. Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础

    1.创建线程的方式: /** * StudySjms * <p> * Created by haozb on 2018/2/28. */ public class ThreadDemo e ...

  7. Java Script 读书笔记 (四) 面向对象编程

    1. 对象,属性 前面看到对象里删除属性一直疑惑,什么是对象,为什么属性可以删除, 我印象里的属性还是停留在property, 总想不明白为什么属性竟然能够删除.直到看到标准库才明白,原来对象就是py ...

  8. 《Effective Java》读书笔记 - 8.通用编程

    Chapter 8 General Programming Item 45: Minimize the scope of local variables local variables应该在他们要被用 ...

  9. 深入理解java虚拟机读书笔记--java内存区域和管理

    第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据 ...

随机推荐

  1. http2.0 特性

    1.HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1. 查看http协议(chrome F12) 2.异步连接多路复用 HTTP2.0 把消息分解为独立帧,交 ...

  2. Android学习笔记七:五大存储

    在Android中,可供选择的存储方式有SharedPreferences.文件存储.SQLite数据库方式.内容提供器(Content provider)和网络. 一.SharedPreferenc ...

  3. 在 Vim 中使用 pydiction 对 Python 进行代码补全

    Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串. Pydiction 由 3 个主要文件构成 ...

  4. jenkins相关默认路径

    安装完成后,有如下相关目录:(1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里.( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端 ...

  5. scala object 转Class Scala强制 类型转换

    scala object 转Class Scala强制类型转换   asInstanceOf[T] 将对象类型强制转换为T类型. 还是由于泛型存在类型擦除的原因,1.asInstanceOf[Stri ...

  6. iOS中消息传递方式

    iOS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 1.通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. NSNotificati ...

  7. 对IT技术开发职业生涯的思考

    对职业生涯的思考 从刚毕业到目前所在公司,差不多6年了,想想这六年里面,自己的能力和刚毕业比有了很大的提升,但是现在在什么能力上,我不知道,毕竟没有去过别的公司.最近也在思考自己未来,算是比较迷茫阶段 ...

  8. CMFCPropertyGridProperty用法

    MFCPropertyGridCtrl 是VC 2008 pack中的控件类. CMFCPropertyGridProperty这个控件类中的属性值类类. 针对修改属性后,对属性值改变的消息处理: 方 ...

  9. C++ map,set内部数据结构

    1)Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据.它的每个元素的值必须唯一,而且系统会根据该值来自动将数据排序.每个元素的值不能直接被改变.[重点]内部结构采用红黑树的平衡二叉 ...

  10. bootstrap fileinput 文件上传

    最近因为项目需要研究了下bootstrap fileinput的使用,来记录下这几天的使用心得吧. 前台html页面的代码 <form role="form" id=&quo ...