JAVA多线程机制之线程概念

简介:

在操作系统中,一个独立的正在运行的程序称为进程,通常一个程序又被分为称作任务的小块,任务又可以进一步分为称作线程的更小的块。如果一个程序多于一个线程同时执行,就可以称为多线程并行。
一个线程被定义为一个单一的连续控制流,线程也可以成为执行环境或者轻量级程序。当一个程序发起之后,会首先生成一个缺省的线程,这个线程被称作主线程,就是由main方法引导进入的线程,main方法调用的方法结构会在这个主线程中顺序执行。如果在线程中新建并启动的线程称为从线程。从线程也有自己的入口方法,这是由开发者自己定义的。
多线程程序比多进程程序需要更少的管理成本。进程是重量级的任务,需要为他们分配自己独立的内存资源。进程间的通信是昂贵而受限的,由于每个进程内存资源是独立的,所以进程间的转换也需要很大的系统开销。线程则是轻量级的任务,它们只在单个进程作用域活动,可以共享相同的地址空间,共同处理一个进程。线程间的通信和转换是低成本的,因为它们可以访问和使用同一个内存空间。
当JAVA程序使用多进程任务处理程序时,多进程程序是不受JVM控制的,即JVM不能操纵进程暂停或者继续。而多线程则是受JVM控制,这正是由于JAVA支持多线程操作。使用多线程的优势在于可以编写出非常高效的程序。程序运行中除了CPU外,还要使用键盘、硬盘等外部输入存储设备,还经常使用网络设备进行数据传输。这些设备的读写速度都比CPU执行速度慢很多,因此程序经常等待接收或者发送数据。使用多线程可以充分利用CPU资源,当一个线程因为读写需要等待时,另外一个线程就可以运行了。
在JAVA中,线程有如下几种状态:
1. 新建(New):当创建线程后处于该状态
2. 就绪(Ready):创建线程后调用start()方法后,线程处于就绪状态
3. 运行(Running):当处于就绪的线程得到CPU资源后将处于运行状态
4. 挂起(Suspend):程序可以在运行中将线程暂停挂起
5. 阻塞(Block):运行中的线程如果遇到读写或者其他堵塞条件,将转入阻塞状态
6. 恢复(Resume):当处于阻塞状态的线程如果获得资源时或者阻塞事件结束则线程恢复执行
7. 终止(Terminate):当线程遇到异常或者执行结束则终止

目录
相关文章
|
9天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
46 0
|
22天前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
55 16
|
1月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
1月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
2月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
296 83
|
2月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
137 0
|
2月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
240 83
|
3月前
|
移动开发 Java
说一说 Java 是如何实现线程间通信
我是小假 期待与你的下一次相遇 ~