Java中多线程概念详解

        在操作系统中,两个比较容易混淆的概念是线程(thread)与进程(process)。操作系统中的进程是一个计算机程序的运行实例。计算机程序中包含了需要执行的指令,而进程则表示正在执行的指令,对同一个计算机程序可以创建多个进程。这些进程的运行状态各不相同。进程一般作为资源的组成单位。进程有自己独立的地址空间,包含程序内容和数据。不同进程的地址空间的相互隔离的。进程拥有各种资源和状态信息,包含打开的文件、子进程和信号处理器等。线程表示的是进程的执行流程,是CPU调度执行的基本单位。线程有自己的程序计数器、寄存器、堆栈和帧等。同一进程中的线程共用相同的地址空间,同时共享进程所拥有的内存和其他资源。

         引入线程的主要动机在于提高程序的运行性能。在一个程序中主要存在使用CPU和IO操作的两类计算。IO操作相对CPU运算来说比较耗时,而且很多都是阻塞式是。当一个线程所执行的IO操作被阻塞时,同一进程中的其他线程可以使用CPU来进行计算。在资源允许时,多个线程可以同时进行IO操作。这种方式提高了操作系统中资源的使用效率,进而提高了进程的运行性能。线程的概念在主流操作系统和编程语言中都得到了支持。不同操作系统和编程语言中的线程的使用方式有很大的区别这对于开发跨平台的多线程程序来说是个不小的挑战。Java平台通过Java虚拟机解决了跨平台的问题,使由相同API开发的多线程程序在不同的平台上都能正确运行。

      Java标准库提供了与进程和线程相关的API。表示进程的是java.lang.Process类和创建进程的是java.lang.ProcessBuilder类。表示线程的是java.lang.Thread类。在虚拟机启动之后,通常只有一个普通线程来运行程序代码。这个线程用来启动主Java类的main方法的运行。程序在运行时可以根据需要创建新的线程并启动线程的运行。除了普通线程之外,还有一类线程是守护线程(daemon thread)。守护线程一般在后台运行,提供程序运行时所需的服务。当虚拟机中运行的所有线程都是守护线程时,虚拟机终止运行。

        Java线程API的具体实现由底层的Java虚拟机来负责提供,为了好地理解线程API的使用及多线程开发,需要对虚拟机内部的相关机制有一定的了解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值