首页 » 正文内容 » Java并发编程基础--线程

Java并发编程基础--线程

时间:2023-11-21 10:34:53  热度:0°C

什么是线程现代操作系统在运行一个程序时会为其创建一个进程,例如启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时运行。

一个Java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上Java程序天生就是多线程程序,因为执行main()方法的是一个名称为main的线程,可以使用下面代码查看一个普通的Java程序包含哪些线程:

public class MultiThread { public static void main(String[] args) { ThreadMXBean threadBean = ManagementFactory/getThreadMXBean()/ ThreadInfo[] threadInfos = threadBean/dumpAllThreads(false/ false)/ for (ThreadInfo threadInfo / threadInfos) { System/out/println( [ + threadInfo/getThreadId() + ] + threadInfo/getThreadName())/ } }}

运行结果:

[5] Attach Listener[4] Signal Dispatcher[3] Finalizer[2] Reference Handler[1]main

可以看到,一个Java程序不仅仅是main()方法的运行,而是main线程和多个其它线程同时在运行。

为什么要用多线程只执行了一个简单的Java程序,却要启动那么多 无关 的线程,是不是把简单的问题复杂化了?当然不是,因为正确的使用多线程,总是会带来显著的好处,而使用多线程的原因主要有以下几点:

  • 更多的处理器核心

    随着处理器上的核心数越来越多,以及超线程技术的广泛运用,现在的计算机都比以前更擅长并行计算,而处理器性能的提升方式,也从更高的主频向更多的核心发展。

    线程是大多数系统调度的基本单元,一个程序作为一个进程来运行,程序运行过程中能够创建多个线程,而一个线程在同一时刻只能运行在一个处理器上。试想一下,一个单线程程序在运行时只能使用一个处理器,那么即使计算机有再多的处理器也无法显著提高程序运行效率。相反,如果使用多线程,将计算逻辑分配到多个处理器上,就会显著减少程序处理时间,而且可以随着更多处理器的加入而变得更加有效率

  • 更快的响应时间

    有时候我们会写比较复杂的代码,例如创建一笔订单,它包括***订单数据、生成订单快照、发送邮件通知卖家和记录货品销售数量等。用户从单击提交按钮开始,就要等待这些操作全部完成后才能看到订购成功后的结果,但是这么多业务,如何能够让其更快的完成呢?

    在上面场景中,我们可以使用多线程,即将数据一致性不强的操作派发给其它线程去处理,如生成订单快照、发送邮件等等,这样做的好处是响应用户请求的线程能够尽可能快的完成,缩短了响应时间,提升了用户体验

  • 更好的编程模型

    Java为多线程编程提供了良好的编程模型,使开发人员更加专注于问题的解决,即为所遇到的问题建立合适的模型,而不是绞尽脑汁地考虑如何将其多线程化。一旦开发人员建立好了模型,稍做修改总是能够方便地映射到Java提供的多线程编程模型上。

线程的状态Java线程在运行的生命周期中可能处于下表中列出的6种状态,在给定的一个时刻,线程只能处于其中一种状态:

状态名称

免责声明:
1. 《Java并发编程基础--线程》内容来源于互联网,版权归原著者或相关公司所有。
2. 若《83404919文库网》收录的文本内容侵犯了您的权益或隐私,请立即通知我们删除。