基本概念

  • 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。
  • 进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。
  • 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位。
  • 线程就是独立的执行路径。
  • 每个线程在做自己的工作内存交互,内存控制不当会造成数据不一致。

线程的三种创建方式

  1. 继承Thread类接口(重点)
    继承Thread类,重写run()方法,调用start开启线程
    线程学习笔记

  2. 实现Runnable接口(重点)推荐使用
    实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法。
    线程学习笔记

  3. 实现Callable接口(了解)

静态代理

真实对象和代理对象都要实现同一个接口,代理对象要代理真实角色
好处:代理对象可以做很多真实对象做不了的事情 真实对象专注做自己的事情。

Lambda表达式

要理解Function Interface(函数式接口)是学习Java8 lambda表达式的关键坐在。
函数式接口的定义:
任何接口,如果只包含唯一一个抽象方法(就一个方法),那么它就是一个函数式接口。
线程学习笔记
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
线程学习笔记

线程状态

线程学习笔记

停止线程

线程学习笔记

线程休眠

  1. sleep(时间)指定当前线程阻塞的毫秒数
  2. sleep存在异常InterruptedException
  3. sleep时间到达后线程进入就绪状态 ‘=
  4. sleep可以模拟网络延时,倒计时等。 每个对象
  5. 都有一个锁,sleep不会释放锁

线程礼让

。yield

线程状态

线程学习笔记

守护线程

线程分为用户线程和守护线程
虚拟机必须保护用户线程执行完毕
虚拟机不用等待守护线程执行完毕
如,后台记录操作日志,监控内存,垃圾回收等等

守护同步

并发 同一个对象被多个线程同时操作

死锁

线程学习笔记

锁Lock 可重入锁

线程学习笔记

相关文章: