Java多线程系列1: 并发

Java多线程系列1: 并发

本文是作者的读博客笔记和心得整理,也引用了一些比较好的博客文章,部分内容来源于网络,如有侵权,请联系作者。

为什么要多线程

1,资源利用率高
要区分是CPU密集型还是IO密集型,因为IO是阻塞等待的,这时CPU就可以去做别的,然后等这个线程可以work了切过来的时候就可以直接工作了
2,程序设计简单
3,程序响应快
比如一个程序监听端口8080,这时进来一个请求,立刻传递给工作者线程,然后继续监听下一个.

多线程的代价

1,设计复杂,尤其是子线程之间的交互
2,上下文切换的开销
3,增加了资源消耗

线程的运行与创建

Java创建线程可以继承Thread类或者实现Runnable接口创建线程对象。

Java内存模型JMM

并发编程模式的分类:
1,共享内存-共享程序的公共状态,线程之间通过读写公共状态来通信;
JMM主要运用这种方法,每个线程有一个主内存副本,然后依次更新,别的线程发现主内存中共享变量的值更新了,就相当于接收到了消息.
2,消息传递-通过明确的发送消息来进行通信

Java中的堆内存在线程之间共享,局部变量,方法定义参数,异常处理参数不共享.

Java重排序和顺序一致性

TODO:
这一块内容感觉比较复杂,面试也不会问到,所以可以直接参考这个博客:
https://how2playlife.com/2019/10/02/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/Java%E5%B9%B6%E5%8F%91%E6%8C%87%E5%8D%972%EF%BC%9A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8BJMM.md/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值