一:多线程的两种方式

1.线程与进程

  进程是一个执行的程序

  线程则是属于进程的一个控制单元。

2.多线程的第一种方式

  继承Thewad类。

  run的作用:多线程存储程序的地方

  start的作用:开启线程,同时,调用run方法。

3.第一种方式的线程程序

  多线程的相关知识点梳理_子类

4.第二种方式,实现接口

  .多线程的相关知识点梳理_同步函数_02

5.两种方式的比较

  第二种方式:避免了单继承的局限性。

   两种方式的线程代码存放位置不同:

    继承Thread的线程代码放在Thread的子类run的方法中。

    实现Runnable,线程代码存在接口的子类的run方法中。

 

二:多线程的安全问题

6.同步代码块

  多线程的相关知识点梳理_同步函数_03

7.同步函数

  使用的锁是this。

  多线程的相关知识点梳理_单线程_04

8. 使用同步函数实现卖票程序

  需要把要同步的代码另外移植到一个函数中,因为,直接在函数上同步上,while不会跳出来,就是说一个线程一直运行到底。

  多线程的相关知识点梳理_子类_05

9.静态同步函数的锁

  静态进入内存后,内存没有本类对象,但是一定该类对应的字节码文件对象

  类名.class。

10.懒汉式单例模式下的线程安全

  多线程的相关知识点梳理_守护进程_06

11.死锁程序

  两个锁互相锁。

  多线程的相关知识点梳理_单线程_07

  多线程的相关知识点梳理_子类_08

 

三:通讯

12.单线程间通讯

  多线程的相关知识点梳理_多线程_09

  多线程的相关知识点梳理_同步函数_10

  多线程的相关知识点梳理_守护进程_11

13.单线程间通讯的优化

  一些方法可以放在Resource中。

  多线程的相关知识点梳理_多线程_12

  多线程的相关知识点梳理_守护进程_13

  多线程的相关知识点梳理_多线程_14

14.多线程间多通讯

  多线程的相关知识点梳理_子类_15

  多线程的相关知识点梳理_同步函数_16

  多线程的相关知识点梳理_守护进程_17

15.同步的lock锁的使用

  多线程的相关知识点梳理_多线程_18

  多线程的相关知识点梳理_多线程_19

  多线程的相关知识点梳理_子类_20

16.守护进程

  主进程结束后,其他前程也跟着结束

  多线程的相关知识点梳理_单线程_21

17.停止进程

  多线程的相关知识点梳理_子类_22

18.join方法。

  多线程的相关知识点梳理_守护进程_23