多线程基础

案例  情况1

案例  情况2

案例  情况3

线程的执行流程

实现线程的两种方式,以及利弊

举例子比较:。。。。。。。。。。。

 

线程的五种状态

新建  就绪   运行  {阻塞(->就绪)} 死亡

出现阻塞 sleep与wait的区别

四种就绪状态的例子

  1. 开启线程
  2. 解除阻塞的状态
  3. yieLd 礼让线程

Jvm的内存管理

四种阻塞的例子

  1. sleep 休眠  (只会让出CPU,不会导致锁行为的改变  加锁
  2. Wait等待   (不仅让出CPU,还释放已经占有的同步资源锁 不加锁
  3. Jion 插队
  4. Read wlite

线程里面的方法

Sleep与yiwId 一样都是暂停线程

Sleep 运行状态---》阻塞状态   时间到了阻塞状态——》就绪状态  等待CPU的调度

yiwID  运行状态——》就绪状态  高风亮节礼让线程,让出CPU的调度,避免当前线程占用CPU过久,让其他线程重新竞争CPU的调度权(执行权),

Join是一个成员方法,需要对象的调用,sleep 以及yieId是静态方法,可以直接的调用

currentThread().getName(); 获取当前现成的名称

Theard  多线程的构造函数(重要的一节)

................

Priority  线程的优先级

new thread().getpriority();   这是默认的优先级

Daemon   守护线程

守护线程;

详解:

在Java中有两种线程:一种是普通线程,另一种是守护线程

守护线程:顾名思义就是守护的线程,它是为非守护线程服务的线程。

JVM虚拟机正常退出的时机就是系统中不存在非守护线程的时候,也就是说系统中不存在普通线程时虚拟机退出而不管守护线程是否还在运行

生活场景举例:普通线程相当于是主人,守护线程就是保姆,保姆是为了主人服务的。当主人都挂了,那么保姆可以存在也可以不存在

有个同事问我的一个面试题:一个主线程,三个子线程,9个守护线程,他们停止的顺序时什么? 
答:我们理解了上面讲的虚拟机退出时机再结合生活场景的例子,很容易就能搞明白这个问题!主线程相当于家庭、子线程相当于主人、守护线程相当于保姆或者是奴才,那么当我们的主人挂了,保姆可能还要继续打扫房子,但是房子也坏了消失了,那么保姆或奴才也就没必要存在了。所以说守护线程是最后才会停止的。那么主线程和子线程是谁先停止呢?这个其实很简单,我们想想,在一个main方法中启动一个线程打印一条语句,那么只有当这个线程停止之后,控制台的那个红色框才会置灰,也就是说main线程才会死亡。那么这个问题的答案就是:子、主、守护。

1.代码例子:Thread.setDaemon(true)设置为守护线程。

2.

=============================================================================================


并发

并发三要素

线程的同步

考虑两个方面:性能与安全

同步有两种方式:(synchronized)同步方法  同步块

需要你自己理解到位:

什么时候锁上了?什么时候没有锁上?

为什么 要锁他?

线程不安全是哪里造成的?

原因是什么??

指定锁的对象,使用同步代码块。。

代码块分为四种

普通块

局部快

静态块  类

构造块  对象

 

同步块  方法里面  解决方法的安全

以后就是我的最后总结语

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值