第二章  Java并行程序基础

1、线程的基本操作

  • 线程:进程是线程的容器,线程是轻量级进程,是程序执行的最小单位,使用多线程而不用多进程去进行并发程序设计是因为线程间的切换和调度的成本远远的小于进程。
  • 新建线程:通过new关键字创建一个线程对象,此时线程处于NEW状态,等到线程start()方法被调用时,会让这个线程的run方法执行,线程执行时处于RUNNABLE状态,表示线程所需一切资源都准备好了。
  • 终止线程:使用stop()方法可以将线程终止,已被废弃可能引起数据不一致性,不推荐使用。
  • 线程中断:intertupt()中断线程,isInterrupted()判断线程是否被中断,interrupted()判断是否被中断并清除当前中断标志。
  • 等待和通知:wait()方法被调用以后,当前线程在这个对象上等待,notify()方法调用会从等待队列中随机唤醒一个线程,这两个方法都属于object类,这两个方法的使用必须包含在synchronized语句中,都得先获得对象监视器。
  • wait()方法和sleep()方法的区别:wait方法可以被唤起,sleep不能。wait方法会释放目标对象的锁,sleep方法不释放任何资源。
  • 挂起和继续执行:suspend挂起方法使线程暂停的同时不会释放任何资源,直到resume操作被挂起的线程才能继续,这两个方法已经被废弃不推荐使用。
  • 等待线程结束:join()阻塞在当前线程,直到目标线程执行完毕。
  • 谦让:yield()方法使线程让出CPU可以给其他线程一些机会,自己参与下一次竞争中。

2、volatile与Java内存模型

  • volatile:告诉虚拟机这个变量极有可能被修改,确保一个线程修改数据后,其他线程也可以看到改动。

3、线程组

  • 线程组:如果线程数量很多可以将具有相同功能的线程放在同一个线程组中。可以使用Thread的构造函数,指定线程所属的线程组ThreadGroup,将线程和线程组关联起来。
  • activeCount():获取活动线程的总数是一个估计值。
  • list():显示线程组的详细信息。

4、守护线程

  • 当一个Java应用内装有守护线程时Java虚拟机将自动退出。
  • 垃圾回收和JIT都可以理解为守护线程

5、线程安全与synchronized

  • synchronized的作用:实现线程间的同步,它的工作是对同步代码块加锁,使每一次只有一个线程进入同步代码块,从而保证线程的安全性。
  • 指定加锁对象:对给定的对象加锁,进入同步代码之前要获得给定对象的锁
  • 直接作用于实例对象:相当于对当前实例加锁,在进入同步代码块前要获得当前实例的锁。
  • 直接作用于静态方法:相当于对当前类加锁,在进入同步代码块之前要获得当前类的锁。

转载请于明显处标明出处

https://www.cnblogs.com/AmyZheng/p/10437083.html

《实战Java高并发程序设计》读书笔记二的更多相关文章

  1. 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域

    深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...

  2. 【Todo】深入理解Java虚拟机 读书笔记

    有一个在线系列地址 <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M ...

  3. 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎

    五 虚拟机字节码执行引擎   1 运行时栈帧结构     ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素.     ---栈帧中存储了方法的局部变 ...

  4. 深入理解Java虚拟机--阅读笔记二

    垃圾收集器与内存分配策略 一.判断对象是否已死 1.垃圾收集器在对堆进行回收前,要先判断对象是否已死.而判断的算法有引用计数算法和可达性分析算法: 2.引用计数算法是给对象添加引用计数器,有地方引用就 ...

  5. 深入理解Java虚拟机读书笔记8----Java内存模型与线程

    八 Java内存模型与线程   1 Java内存模型     ---主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.     ---此处的变量和J ...

  6. 深入理解Java虚拟机读书笔记7----晚期(运行期)优化

    七 晚期(运行期)优化 1 即时编译器(JIT编译器)     ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体.     ...

  7. 深入理解Java虚拟机读书笔记4----虚拟机类加载机制

    四 虚拟机类加载机制 1 类加载机制     ---概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型.     -- ...

  8. 深入理解Java虚拟机读书笔记3----类文件结构

    三 类文件结构 1 Java虚拟机的两种中立特性     · 平台无关性     · 语言无关性     实现平台无关性和语言无关性的基础是虚拟机和字节码存储格式(Class文件).   2 Clas ...

  9. 深入理解Java虚拟机读书笔记1----Java内存区域与HotSpot虚拟机对象

    一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE?     Java技术体系包括:         · Java程序设计语言:         · 各种硬件平台上的 ...

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

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

随机推荐

  1. PHP 可选参数

    function chooseable($a,$b,$d,$c="我是可选参数c"){ //注意:可选参数一定要是在必选参数后面(有默认值就是可选参数):PHP中参数一定要变量符号 ...

  2. java基础(十一)之抽象类和抽象函数

    1.抽象函数的语法特征2.抽象类的语法特征3.抽象类的作用 抽象函数 只有函数的定义,没有函数体的函数被称为抽象函数: abstract void func(); 抽象类 使用abstract定义的类 ...

  3. win api + 基础乐理产生正弦波声音

    暂时记录. 感觉想写个电子钢琴乐程序了,不过感觉音有点怪怪的. #include <iostream> #include <windows.h> #include <Mm ...

  4. Jarvis OJ - 软件密码破解-1 -Writeup

    Jarvis OJ - 软件密码破解-1 -Writeup 转载请标明出处http://www.cnblogs.com/WangAoBo/p/7243801.html 记录这道题主要是想记录一下动态调 ...

  5. CMD命令行实现复制一张图片1000份:

    CMD命令行实现复制一张图片1000份: 进入CMD命令行后,进入图片所在目录,执行以下命令: FOR /L %i IN (,,) DO COPY .jpg %i.jpg 模板图片名字为1.jpg,执 ...

  6. 第八届蓝桥杯C++B组 日期问题

    标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...

  7. 2019南昌网络赛 hello 2019

    这道题和一道2017,2016的类似. A string t is called nice if a string “2017” occurs in t as a subsequence but a ...

  8. 概率dp poj2096

    /** dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样 ...

  9. ASA升级

    1.开启TFTP server,并且保证设备和TFTP server可达.2.上传镜像文件到ASA:ciscoasa# copy tftp: disk0: >>>>拷贝镜像到A ...

  10. python字典里面列表排序

    #coding=utf8 #获取到的数据库ip,和负载数据,需要按照负载情况排序 a={u'1.8.1.14': [379, 368, 361, 358, 1363], u'9.2.4.3': [42 ...