java线程属性_java线程的四大特性

线程具有并发性/并行性

计算机同一时间可能面临我们给与的多项任务,这些任务可以串行执行,一个接一个完成,这样做的结果多数情况下是效率低下的。为了提高任务执行效率,我们可以创建多个线程让这些任务同时执行(并发/并行)。特别是现在的CPU大多是多核心,并行执行更能提高CPU利用率。

并发:就是在单核处理器中同时处理多个任务,多个任务轮换执行(这里的同时指的是逻辑上的同时) 。

并行:就是在多核处理器中同时处理多个任务,多个任务真的同时执行(这里的同时指的就是物理上的同时)。

线程的优先级特性

每个线程执行时都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。

在不同的JVM中,有着不同的CPU调度算法,对于大部分的JVM来说,优先级也是调度算法中的一个参数。所以,线程优先级在一定程度上,对线程的调度执行顺序有所影响,但不能用于保证线程的执行顺序,因为优先级仅仅是其中一个参数而已,其他参数还有线程的等待时间、执行时间等。而且操作系统也可能完全不用理会JAVA线程对于优先级的设定。因此利用线程优先级属性控制线程的执行顺序是不明智的。

线程的状态与生命周期

线程是有状态的,每个线程都经历从创建到开始到死亡的生命周期。多线程编程经常要对线程的状态进行跟踪、控制。理解线程状态是多线程编程的基础,是非常重要内容。这里仅简单介绍下线程状态,后面会有专属的文章对线程状态详细讲解。

线程的资源关联性

线程是利用各种计算机资源来执行的,这些资源有cpu、内存、磁盘等等。这些计算机资源的基础调度和分派是通过操作系统或JVM来完成的。那么系统是怎样为我们分配资源的呢?一般说单线程比较简单,因为没有竞争,系统把能用的资源都分给唯一线程就可以了。多线程的场合就比较麻烦了,这时我们把资源分成二种类型“线程独占资源”,“线程间共享资源”。

系统为每个线程都分配少量的独占资源,比如每个线程创建时都会建立自己的工作内存(线程栈区),这是线程自己的独占资源,其他线程是不能访问的。再举个例子,由关键字ThreadLocal修饰的变量(内存资源)也是线程私有的独占资源。

当然除了上面少数的特例,系统大部分资源是线程间共享的,比如大部的内存资源、网络接口、磁盘IO等。这些共享资源的使用需要程序员人工干预,这也是多线程编程的重点内容之一,比如我们可以利用锁机制让多个线程合理的有序使用资源,保证共享资源使用的线程安全。

053e192253b488e2159c43f468e02240.png

近期将会推出多线程开发系列文章,目标覆盖多线程开发全栈!您的关注和点赞是我前进的最大动力!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值