Java多线程的总结

来源:互联网 发布:linux合并两个文件夹 编辑:程序博客网 时间:2024/06/15 01:09

一、线程和进程的区别

(1)多线程:一个应用程序有多条执行路径
  进程:正在执行的应用程序
  线程:进程的执行单元,执行路径
  单线程:一个应用程序只有一条执行路径
  多线程:一个应用程序有多条执行路径
  
  多进程的意义?
   提高CPU的使用率
  多线程的意义?
   提高应用程序的使用率

二、Java程序的运行原理及JVM的启动是多线程的吗?

(1)java命令启动jvm虚拟机,jvm启动一个进程,该进程会启动一个主线程

(2)jvm的启动是多线程的,当vm启动时最少有两个线程启动,一个是主线程,一个是垃圾回收线程

三、多线程的实现方法

(1)继承Thread类

(2)实现Runnable

四、线程的生命周期

(1)新建线程

(2)线程就绪状态

(3)线程运行状态

(4)线程阻塞状态

(5)线程死亡

参考图

五、线程控制的主要方法

(1)获取线程的名称

A:当继承Thread是,直接getName()

B:实现Runnable接口时,使用

Thread.currentThread().getName()
(2)A:休眠线程  B:加入线程  C:礼让线程  D:后台线程  E:终止线程(掌握)

六、同步解决线程安全问题
A:同步代码块   synchronized(对象) {    需要被同步的代码;   }      这里的锁对象可以是任意对象。
synchronized(this){.......}


   
  B:同步方法
   把同步加在方法上。
   
   这里的锁对象是this
public void xxx(){synchronized(this){.......}}     


  C:静态同步方法   把同步加在方法上。      这里的锁对象是当前类的字节码文件对象(反射再讲字节码文件对象)
public static void xxx(){synchronized(当前类.class){.......}}     

七、线程安全问题的之买票(另外再写一个文章)