多线程笔记

什么是进程:

进程:当我们进入一个应用程序的时候,就会开启一个进程

在进程中至少有一条线程,该线程就是主线程

 

什么是线程:

线程:线程就是一条程序执行的路径

在进程中开启一条线程执行我们的程序代码,程序执行顺序必须

遵循从上往下的顺序

注意:如果是多线程的情况下,代码执行顺序就是从上往下执行

 

什么是多线程

也就是在同一个进程中,开启了多条不同的执行路径,每条执行路径相互不影响,

同时执行。

 

对多线程哪些有好处

提高程序效率,同时的,并行

 

对线程哪些应用场景

异步的实现发送短信,快速提高响应,对用户的体验非常好

异步的记录日志

对我们后端接口中比较耗时的代码都可以采用异步实现

 

后端开发为什么需要使用到多线程

因为我们的http协议默认的情况采用同步的形式

整个过程都是基于请求与相应的过程,如果服务器没有及时的

相应给客户端的情况下,就会造成我们浏览器或者是客户端一直等待

这样对我们的用户体验是非常不友好的

 

单线程与多线程执行到底有哪些区别

单线程代码执行顺序从上往下执行,如果中间某个环节一旦出错,后面将不执行

多线程:也就是采用多条不同的线程执行代码,每个线程执行不影响,可以提高

我们的相应的速度

 

 

 

 

 

什么是线程安全:

当多个线程同时共享同一个全局变量做写操作是,可能会受到其他线程的干扰

就会产生线程安全的问题。

产生背景:同时、做写的时候

 

如何解决线程安全问题

核心思想:在同一时刻,只能有一个线程执行,那么这个时候整个程序就变成单线程执行

只要加上锁缺点:对程序效率执行非常低

 

 

java中如何解决线程安全问题

lock锁  synchronized锁 cas无锁,乐观锁

在线程种,同时执行一个方法时,必须要获取锁,只有获取锁的情况下

才可以进去到该方法执行

列:如果A线程获取到锁的情况下,那么B线程就会一直阻塞等待,整个过程是一个悲观锁

必须要等到A线程释放锁之后B线程重新进入获取锁的状态

多个线程如何获取锁,看运气。

 

锁和对象绑定

 

锁的可以重入锁

当前的线程如果获取到锁的情况下,再次请求的时候可以直接获取锁

 

多线程死锁的现象

产生背景:在同步中嵌套同步,也就是在锁中再嵌套锁

同时

线程A先获取object锁,再去获取this锁

线程B先获取this,再去获取object

 

多线程死锁如何排查

java  jdk自带多线程死锁排查工具。

 

 

lock锁和synchronized区别

syn锁属于java中内置关键字,lock是基于aqs封装锁

syn自动挡,当代码运行完毕或程序抛出异常情况下,自动释放

lock可以完全人为控制获取,释放锁,扩张性非常高,分为读写锁

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值