【JavaEE】第一章线程和多线程
企业级:JavaEE
流 集合
面向对象特点:封装 继承 多态
属性的赋值:接口 构造方法
流的应用 常用的字节流 常用的字符流 文件的操作
泛型(常见的集合)
线程简介
java中创建多线程
多线程的同步和死锁
线程简介
程序执行的时候会产生一个进程,一个进程会产生至少一个线程(主线程)
(理解线程概念,掌握区别 生命周期 状态)
程序 进程 线程
- 程序是一段静态的代码,是应用软件执行的蓝本,程序段是程序的一部分
- 进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程
- 线程
java中的线程
- 每个java程序都有一个默认的主线程
- 当JVM加载代码发现**main方法**之后,就会立即启动一个线程,这个线程成为主线程- 主线程的特点- 是产生其他子线程的线程- 不一定是最后完成执行的线程- 主线程和线程是并行执行的,完成先后不定
- 如果**main方法中没有创建其他的线程**,那么当main方法执行完最后一个语句,JVM就会结束Java应用程序——**单线程(主线程)**
- 如果**main方法中又创建了其他线程**,那么JVM就要在主线程和其他线程之间轮流切换,JVM要等程序中所有线程都结束之后才结束程序——多线程
多线程的优势:
提高效率
- 减轻编写交互频繁、涉及面多的程序的困难
- 程序的吞吐量会得到改善
- 由多个处理器的系统,可以**并发(同时 并行)**运行不同的线程.(否则,任何时刻只有一个线程在运行)
- “同时”执行是人的感觉,在线程之间实际上轮换执行
多线程的使用场景
- 同时处理多件事
- 多个线程分解大任务
线程的生命周期
新建 就绪 运行 阻塞 死亡
面向对象:更符合人的思维方式
java运行基础:
继承Thread类,重写.run方法。执行.strat方法。
新建(thread类) 就绪 运行 阻塞 死亡
调用start() 后处于就绪状态,CPU允许之后执行run() 方法
运行结束之后处于死亡状态
运行中的线程,如果因为条件不具备而导致阻塞状态;
当阻塞状态拥有继续执行的条件之后会处于就绪状态(不可以直接转换成运行状态)
只有 运行状态 和 阻塞状态 是活的状态
运行状态和就绪状态可以相互转换
- 新建状态:线程对象已经创建,还没有在其上调用start()方法
- 可运行状态:当线程调用start方法,但调度程序还没有把它选定为运行线程时线程所处的状态
- 运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一方式
- 等待/阻塞/睡眠状态:其共同点是:线程仍旧是活的,但是当前没有条件运行。它是可运行的,当某件事件出现(具备了资源),他可能返回到可运行状态
- 死亡状态:当线程的run()方法完成时就认为它死去。线程一旦死亡,就不能复生。 一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常
yield()方法不一定生效
【JavaEE】第一章线程和多线程相关推荐
- java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程
[第一章]Java多线程编程 一.进程与线程 多个时间段会有多个程序依次执行,但是同一时间点只有一个进程执行 线程是在进程基础之上划分的更小的程序单元 ,线程是在进程基础上创建并且使用的,所以线程依赖 ...
- Linux多线程服务端编程笔记,陈硕Linux多线程服务端编程读书笔记 —— 第一章 线程安全的对象生命周期管理...
muduo书第一章的思维导图(新窗口打开可以看大图) 线程安全的对象析构和回调(使用shared_ptr和weak_ptr) 注释是英文的(工地英语-) StockFactory.h // in mu ...
- C# 线程手册 第一章 线程定义 .NET 和 C# 对线程的支持
由于.NET Framework 支持自由线程,所以自由线程在所有.NET 语言中都存在,包括C#和VB.NET. 在下一部分,我们将着重关注如何提供这种支持以及更多关于线程是如何做到的,而不再关注线 ...
- 【学习笔记】第二章——线程与多线程模型
文章目录 一. 线程 为什么要引入线程: 引入进程后的变化 线程的属性 线程的实现 二. 多线程模型 1. 多对一模型 2. 一对一模型 3. 多对多模型 三. 总结 一. 线程 为什么要引入线程: ...
- Java7并发编程指南——第一章:线程管理
Java7并发编程指南--第一章:线程管理 @(并发和IO流) Java7并发编程指南第一章线程管理 思维导图 项目代码 思维导图 项目代码 GitHub:Java7ConcurrencyCookbo ...
- 第七章 线程的活性故障--《java多线程编程实战指南-核心篇》
线程活性故障是由资源稀缺型或者程序自身的问题和缺陷导致线程一直处于非RUNNABLE状态,或者线程虽然处于RUNNABLE状态但是其要执行的任务却一直无法进展的故障现象. 死锁 如果两个或者更多的线程 ...
- Java基础篇--多线程之第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数
多线程操作: 编写一个有两个线程的程序,第一个线程用来计算2-100000之间的素数的个数,第二个线程用来计算100000-200000之间的素数的个数,最后输出结果. 1.判断是否为素数的方法: 是 ...
- java多线程核心技术_java多线程编程核心技术——第一章总结
目录: 进程的概念: 百度百科讲解: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 在早期面向进程设计的计算机结构中 ...
- 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld
第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...
- 第一章 认识Java 2019-09-28
(2)JavaSE 核心技术 主要包括:认识Java.变量和运算符.流程控制语句.数组.方法.面向对象基础.面向对象高级特性.异常处理.工具类.集合.IO/NIO.多线程编程.JDK8.0新技术,JD ...
最新文章
- skiplist跳表的 实现
- 推荐一些视觉SLAM的深度学习方法(上)
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
- SQLServer数据库如何收缩日志空间?
- ZfNet解卷积:可视化CNN模型( PythonCode可视化Cifar10)
- jQuery.sap.factory
- 阿里技术高P访谈之张俭恭:情义是阿里与外企的最大不同
- python中的累乘积_Python中的连续元素最大乘积
- 中小微企业税务数据的指标分析
- mysql awr 上海用户组_AWR-mysql教程-PHP中文网
- 文本对比工具google-diff-match-patch
- plsql的安装与配置
- python——自动化报告word(1)
- pdf文件加水印的方法?
- python中e怎么计算_Python之循环结构——实战计算自然底数e,圆周率Π
- 木鱼cms系统审计小结
- 单TYPE-C口 可支持快充又可传输USB2.0数据方案
- 服务器发来的信息手机收不到,收不到QQ好友发来的信息
- 破解百度网盘屏蔽文件分享失效被和谐的独家秘籍
- ReactNative-通过setState控制组件的更新和变化
热门文章
- Token九重天——如何设计区块链项目的通证模型
- Rust: 逆序输出str
- (转)软件商在做券商的事,券商在做搬运工的事,第三方正变成第三者
- 【图像重建】基于matlab迭代步长自适应图像超分辨重建【含Matlab源码 048期】
- 【光学】基于matlab GUI模拟波动光光学系统【含Matlab源码 1064期】
- 【优化求解】基于matlab蚁群算法的函数优化分析【含Matlab源码 219期】
- SPSS 简单线性回归(图文+数据集)【SPSS 025期】
- 机器学习中特征选择_机器学习中的特征选择
- android view 画文字,【Android自定义View】绘图之文字篇(三)
- 解决pip install 库 下载速度慢的问题