首页 > 编程语言 > 详细

多线程入门

时间:2019-11-12 11:46:19      阅读:80      评论:0      收藏:0      [点我收藏+]

线程与进程的区别?

进程就是多个线程的集合,每一个线程都是进行的执行路径。

 

线程的创建方式

1.继承Thread类

2.实现Runnable接口

3.匿名内部类,也是实现Runnable接口

总结:因为java是单继承多实现,所以使用实现比使用继承更灵活。

 

多线程的状态

技术分享图片 

1.新建状态 new线程实例的时候;

2.就绪状态 调用start方法返回的时候,还不会立马调用run方法,需要通其他线程竞争到cpu时间;

3.运行状态 执行run方法的时候;

4.阻塞状态 线程运行过程中由于某种原因阻塞了,如:

  1>调用sleep方法;
  
  2>调用wait方法,等待唤醒;
  
  3>调用I/O操作被阻塞;
  
  4>试图得到锁,而锁被其他线程所持有;

5.死亡状态 run方法执行完毕,或者run方法出现异常;

 

什么是线程安全问题

多个线程同时共享一个全局变量并进行写的操作,可能会发成数据冲突,就是线程安全问题。做读取操作不会有线程安全问题;使用同步或者lock锁啦解决线程安全问题;

synchronized使用

  

1>同步代码块,将可能会发生线程安全的代码使用synchronized关键字进行包装;
2>同步方法,使用synchronized修饰方法,使用的是this锁;
3>静态同步代码块,使用的锁是 类名.class;

lock的使用

 

synchronized与lock的区别

  1>synchronized是java的关键字,lock是一个java接口

  2>synchronized可以自动释放锁,lock需要手动释放锁,lock比synchronized更灵活

  3>lock可以判断是否获取锁,synchronized不行

sleep与wait的区别

  1>sleep是Thread类中的方法,wait是Object类中的方法

  2>sleep休眠不会释放锁,wait会释放锁

  3>wait是与synchronized一起使用

  4>sleep在指定时间后线程会进入就绪状态,wait需要使用notify进行唤醒才能进入就绪状态

 

 

 

 

 



多线程入门

原文:https://www.cnblogs.com/duanshijun/p/11839931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!