《java多线程编程实战指南》笔记

第一章:java世界中的线程

  1. 进程与线程的区别:
    进程是程序向操作系统申请资源的基本单位。线程是进程中可独立执行的最小单位。同一个进程中的所有线程共享该进程中的资源。线程所要完成的计算被称之为任务。
  2. java虚拟机会为每个线程分配调用栈(Call Stack)所需的内存空间。调用栈用于追踪Java代码(方法)间的调用关系以及Java代码对本地代码(机器码)的调用。
  3. 线程的属性:
    编号ID,名称,线程类别(Daemon),优先级priority(0-10)默认5
  4. 线程A调用线程B的join()方法,那么线程A会被暂停,直到线程B运行结束;jield()静态方法:执行该方法的线程对线程调度器说:我不着急,如果别人需要处理器资源的话先给他用吧,如果没人用,我也不介意继续占用。
  5. 守护线程:用于服务其他的线程,如果其他的线程(即用户自定义线程)都执行完毕守护线程才停止。垃圾回收线程是最典型的守护线程。
  6. 并发与并行:并发是在同一时间段内执行,并行是同时执行
  7. 可重入锁:一个线程持有某个锁的时候,还能够继续成功申请到该锁。
  8. 读写锁(ReadWriteLock):一个线程持有读锁时,其他线程也能获取读锁;持有写锁时,其他线程不能获取。读锁被占用时,写锁获取不到;写锁被占用时都获取不到读锁。
    private final ReadWriteLock rwl = new ReentrantReadWriteLock();
    private finla Lock readLock = rwl.readLock();
    private final Lock writeLock = rwl.writeLock();
    使用条件:读比写操作频繁;读线程持有锁时间较长。

你可能感兴趣的:(《java多线程编程实战指南》笔记)