Java后端开发之多线程

主要总结了Java在多线程开发时遇到的一些知识点,疑惑和总结,欢迎大佬们指点交流

1.何为进程、线程

1.1进程:

简单的说,一个进程就是一个程序执行的全部过程,是系统运行程序的基本单位。系统运行一个程序的过程既是一个进行从创建、运行到最后消亡的过程,而一个进程中可能会包含多个线程。

举个例子,像我们电脑中运行的一个个.exe程序就是windos系统下的一个个进程,如下图所示。

具体到我们的Java程序中,main()方法的开始执行既是一个JVM(Java虚拟机)进程的开始,而main()方法所在的线程也就是该进程下的一个线程,称为主线程。

 1.2线程

想必您已经发现,以上对进程的介绍中已多次出现线程的概念了,但是具体什么是线程呢?其实,线程和进程是很相似的概念,理解时也常常放在一起进行比较,刚才说到,进程是一个程序执行的基本单位,而线程是比进程更小的程序执行的单位。一个进程下可以存在一个或多个线程,但是多个线程在共享一个类的进程的方法区资源的同时,每个线程有属于自己的程序计数器虚拟机栈本地方法栈,所以系统运行程序时,线程工作或是多个线程间切换工作时的代价要远小于进程,效率更高,从这个角度说,所以技术人员也常把线程看作是轻量级的进程来理解。

1.3进程和线程的关系

简单来说,一个进程里可以有多个线程,线程是进程下更小的程序运行单位,多个线程共享一个进程下的堆和方法区,而每个线程有具有自己的程序计数器、虚拟机栈和本地方法栈。

进程和线程的最大不同为:各进程间一般是互相独立的,而线程间则很可能会互相影响,进行的创建及转换代价大,但是利于资源的管理和维护,线性的代价小,但不利于资源的统一管理和维护。

 

2.为什么要使用多线程

2.1并行和并发

并行:对同一个时间段,多个任务都有执行,但具体到单位时间内并不一定同时进行

并发:单位时间内,多个任务同时进行

2.2使用多线程的原因

从线程与进程性能上的区别来分析,线程作为轻量级的进程,程序执行的最小单位,在进行线程简单切换上代价远小于进程,而现在又是多核CPU的发展时代,满足了多个线程可以同时运行的硬件要求,减少了线程上下文切换的代价;从时代的发展趋势来看,现在对系统运行的并发量要求越来越高,动则成百上千万的并发量也只有多线程能实现,因为多线程编程是高并发系统开发的基础。

2.3多线程可能带来的问题

内存泄漏、上下文切换、死锁。。。

 

3.线程的生命周期

在Java中一个线程只能处于以下6中生命状态中(图片引自《Java并发编程艺术》)

 

 

一个线程的生命状态随着程序的运行而动态变化,Java线程的生命状态变化如下图所示(图片引自《Java并发编程艺术》)

 </

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值