Java—线程,多线程,线程池研究之旅 one【奇葩之旅,come】

前言

最近经常被问到线程实现方式、多线程如何使用、锁机制、资源是否共享、如何创建安全的生产者、并发开发到底是什么,等等等诸多类似问题,所以本着学习的心态顺便记录点什么,那么我们开始ba~~~

友情提示:这几篇文章都不会过度深究底层源码,谢谢~

一. 进程

1. 进程概念

简单来说,某个程序就是在使用一个进程使其运作。

2. 注意点

  • 进程是独立的,相互不共享,且都有自己的存储空间和系统资源
  • 你可以把进程看成一个大哥,帅气而又迷人!
  • 这个不是重点直接跳过

二. 线程

1. 线程概念

一个程序正常情况由一个进程执行,执行人是一根线程,也就是主线程(main方法,专业术语:main thread)。
也就是说主线程按照一定的规范顺序执行你写的代码

2. 注意点

可以把线程理解为进程(大哥)中的一个线程(小弟),画个图更好的理解一下

请添加图片描述

问题:大哥派小弟去干活,小弟干活慢,怎么办呢,大哥着急呀,这时候就可以多找几个小弟,去干相同的活或者分工干不同的活,加快效率。

三. 多线程

1.多线程概念

终于来到多线程了,上王牌!
一个进程是可以有多个线程的,多个线程可以同时执行代码,提高效率。

2. 注意点:

上图:
请添加图片描述

  • 可以看到,多个线程同时执行代码块,当然具体执行哪个代码块你自己定,就是空跑也是可以的。
  • 正常情况下,使用完一个线程需要进行资源的释放。
  • 我们通过多种方式获取到线程,使多个线程同时执行代码逻辑,这也就是我们常说的多线程开发,这也是分布式开发的基础。

问题:首先每个小弟再用的时候都得打电话叫过来(new 对象),还得一个一个联系(配置),多累! 【频繁的创建和销毁线程对系统的开销是非常大的】

四. 线程池

1. 线程池概念

线程池的基本思路是一种对象池的思想,
开辟一块内存空间,里面存放了一些(未死亡)的线程,
需要时候调用(不是创建),池中线程执行调度由池管理器来处理。

2. 注意点

这时候关键来啦,通俗点讲:有没有一种可能,提前叫一帮小弟过来,让这帮小弟就在旁边等着,需要得时候就上,不需要就站在旁边等待呢!!!
请添加图片描述

  • 线程池是由线程组成,有很多钟线程池,如固定线程数线程池或可变线程数线程池等。
  • 线程池可以帮忙创建调用线程,并且减少系统的开销、使程序运行速度提升,而且非常方便在多个线程之间进行自定义化操作。(wait-notify,如果做一个安全的生产者,这是必备得知识点,重点)

四. 总结

这篇文章写的比较简单,因为java是一门语言,也是一个工具,要想透彻了解,并非一日之寒,而需日积月累,所以学习或者了解到此就可。我们由浅入深,下一篇开始研究“主线程(头号小弟)”,包括概念,如何使调用,顺便看看线程(研究研究小弟,看看怎么剥削他们合适,嘿嘿)!!!

如果写的有误或者理解得不好,请一定告知,我会改正~~

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值