java线程思想_java-多线程思想解析

1.多线程定义:

在单个程序中同时运行多个线程完成不同的工作.多线程本质上是空间换时间.单个程序是什么?一个正在执行的程序就是进程.线程是什么?线程是程序中一个单一的顺序控制流程.线程是程序中最小的执行单位,与进程同样都为基本单元,在一些老式操作系统中是不存在线程这个概念存在的.在这类操作系统中是无法实现线程的.所以多线程与多进程都是依托于操作系统的,都是操作系统的概念不是某种语言的一个概念.在windows中进程之间的内存空间是互相独立的,它的异步协同需要线程来完成,java在这种操作系统中是单进程多线程的体现.

2.多线程的应用场景:

多线程并不一定能提升性能(甚至还会降低性能);多线程也不只是为了提升性能.

1,避免阻塞:单线程中的程序是顺序执行的.如果前方操作出现阻塞后方操作无法执行.此时多线程就能解决这类问题.例1:

a = a1 +a2;

b= b1 + b2;

在单线程如果a 操作阻塞那么 b操作就无法执行,此时开启两个线程分别执行a,b就可以解决类似问题.

2,避免CPU空闲:在进行数据库访问,磁盘IO时对CPU的利用率并不高,在此时可以多线程执行其他的任务,来让CPU繁忙起来.从而让整体程序加快速度完成.

3,提升性能:需要进行空间换时间的情况下. 例2:

要从三个数据库中取数据,每取一个数据库需要耗费10秒那么单线程则需要30秒,利用多线程多开两个线程则需要10秒.

3.多线程的应用前提

1,任务具有并发性.如例1就可以使用多线程在下方情况是不行的,例3:

a = a1 +a2;

b= a + b1 ;

b运算依赖于a的运算结果,在这种情况下是不值得多线程的,因为无法带来任何性能的提升.

2,只有在当前性能瓶颈是cpu的情况下,多线程才能实现提升性能的目的.例4:

一段程序在IO时(IOPS,IO吞吐量)拖慢了程序性能,即使把程序拆成两个线程去运行,也无法带来性能的提升.

3.机器硬件上必须是多核的,负责即使是拆成多个可并行子任务,也没有多余的cpu去执行,只有一个cpu在多个线程中切换来却换去凭空增加了额外的开销.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值