【幻化万千戏红尘】qianfengDay21-java基础学习:进程、线程、Timer-程序员宅基地

技术标签: Android学习之路  

课程回顾:


面向对象
数组
异常
常用类
集合
IO流




今日内容:
进程:应用程序运行时,产生的
独立的应用程序,拥有独立的代码和存储空间
多进程:操作系统可以并发的执行多个进程
线程:进程内部的一条执行路径
多线程:java语言支持程序内部进行多线程开发


进程内部可以有多个线程
线程的作用:
可以分担压力,提高性能
主要用来完成耗时操作


java中线程的创建方式:
1、继承Thread类,并重写run方法
拥有线程类的方法
2、实现Runnable接口,并重写run方法
没有线程类的方法


2种启动方式的区别?
继承Thread:
1、不能再继承其他类
2、操作简单
实现Runnable接口:
1、可以继承
2、保持风格一致
3、操作复杂
4、可以共享数据


线程的启动只能通过start方法,不能通过run方法
注意:线程只有start之后才能参与CPU的抢占,谁能抢到是随机的
如果调用run,那么就相当于调用一个普通类中方法一样,对应线程还是会阻塞
线程抢占CPU是随机的


练习:请创建子线程,完成以下工作:输出1000以内的能被3整除,但是不能被5整除的数字
在主线程输出100句:我要努力




线程的常用方法:
start:启动线程
currentThread:获取当前正在运行的线程
getName:获取线程名称
setName:设置线程名称
isDaemon:验证是否守护线程
setDaemon:设置是否为守护线程
getPriority:获取优先级
setPriority:设置优先级
getState:获取线程状态
join:加入
sleep:睡眠
yield:礼让


用户线程和守护线程:
用户线程:java默认创建的饿线程都是用户线程,不受其他线程的干扰
守护线程:有守护的用户线程,当用户线程结束的时候,对应的守护线程也会跟着结束
isDaemon:验证是否为守护线程
setDaemon:设置是否为守护线程,默认false






优先级:就是线程抢占CPU的概率
优先级高的,抢占CPU的概率更高
反之概率更低
优先级范围:1到10
1最低,10最高
MAX_PRIORITY:最大优先级
MIN_PRIORITY:最小优先级
NORM_PRIORITY:默认的优先级
setPriority:设置优先级
getPriority:获取优先级




优先级的故事:
CPU---皇帝


皇后:10
贵妃:7
嫔妃:5
贵人:3
丫鬟:1




线程调度:可以修改线程状态的方法
1、sleep:睡眠,休眠
静态方法,让当前线程由运行进入到阻塞,直到休眠时间结束才进入就绪参与CPU的抢夺
这种引起的阻塞不会释放资源,但是会释放CPU的所属权




2、join:加入,插入
对象方法
在A线程中调用B线程的join方法,带来的效果:
A线程会进入到阻塞,直到B线程执行完成以后,A线程才能进入就绪参与CPU的抢夺


3、yield:礼让,释放
静态方法
让当前正在运行的线程释放CPU(运行变为就绪),此时所有就绪状态的线程共同抢占CPU




线程生命周期:就是线程的状态
1、新建--New
2、就绪--RUNNBABLE
3、运行--RUNNING
4、阻塞--BLOCKED\WAITING\TIMED_WATITING
5、死亡--TERMINATED 
只有处于就绪状态的线程,才可以参与CPU的抢夺
getState:获取线程的状态




枚举:一种数据类型,一种特殊的类
可以将同种类型的数据,定义造枚举中,用作新的数据类型使用
enum
格式:修饰符 enum 枚举名{
枚举值,枚举值,……;
}
枚举可以使用在switch




java扩展之定时器:Timer
可以重复或延迟执行一些事情


常用方法:
schedule:计划
参数说明:
第一个参数:TimerTask抽象类,需要继承并重写run方法,规定需要重复或延迟执行的事情
第二个参数:延迟的时间,单位毫秒
第三个参数:重复执行的间隔,单位毫秒
cancel:取消


明天:线程安全



















版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013742672/article/details/52179964

智能推荐

关于IPSEC的简单总结_思科ipsec的对称加密和非对称加密说明-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏13次。密码学基础安全三要素:完整性、私密性、不可否认性(合法性)一、完整性:数据没有遭到损坏,或者篡改通过完整性算法进行完整性校验:哈希算法----不可逆算法MD5 SHA例如本地:MD5(原始数据+秘钥)=KEY1原始数据+KEY1 发送到邻居处邻居:MD5(原始信息+本地秘钥)=KEY2若KEY1=KEY2,则表示认证成功。二、私密性:数据通过转换,形成另一种格式(就是转换为让其他..._思科ipsec的对称加密和非对称加密说明

前端——HTML基础_html空心圆-程序员宅基地

文章浏览阅读6k次。目录html基本标签列表标签无序列表有序列表超链接标签a标签假链接表格标签基本表格单元格合并注意事项表单标签【重点】基本介绍form的常见子标签input:输入类型select :选择菜单textarea:文本域通用属性设置默认值其它属性媒体标签html基本标签标题标签<hn></hn> n取值1~6段落标签 段落之间自动进行换行<p></p>粗体标签<b></b>斜体标签<i></i&_html空心圆

中职计算机教学现状,中职计算机专业教学现状及改革对策-程序员宅基地

文章浏览阅读123次。资料简介中职计算机专业教学现状及改革对策摘要:学好计算机专业对于中职学生来说具有重要的意义,不仅增加了自己的技能,还为就业提供了保障。计算机专业教学培养的是中职学生的实际操作能力和综合素质,是符合社会发展需要的。但是,现在的中职计算机专业教学还存在着一些问题,严重影响了教学质量。本文将通过对中职计算机专业教学现状的分析,提出相应的改革对策。关键词:中等职业学校;计算机专业;改革对策随着互联网技术..._中等职业教育计算机网络教学现状

桌面开发者的界面故事,该醒醒了-程序员宅基地

文章浏览阅读43次。本文我们只谈界面。 大部分人最开始学习编程是Console,搞个计算器啥的,后来高级一点能做一个俄罗斯方块出来。很羡慕那些能做出界面的,于是大二学了MFC,一开始看《深入浅出》怎么都搞不懂,后来我们班的一个女生教了我两个小时,我一下子通畅了,用GDI半个月苦哈哈的做了第一个当时觉得还能看得界面(不用任何控件哦)连箭头都是用三根线拼起来的! ...

解决C语言创建链表时出现的问题:引发了异常: 读取访问权限冲突_c语言链表创建时出现访问权限冲突怎么办-程序员宅基地

文章浏览阅读715次,点赞11次,收藏12次。这里可以看到,在打印时传入的地址与1中的head地址并不相同,从而在读取链表head地址时并不是1中的head的地址,也就出现了如上的情况。这里楼主也不清楚具体是什么导致了传入地址的变化,还望有大佬指点。我也参考了另一位楼主的解决办法,如下。既然通过逐行运行得知是传入PrintList的地址不一致而导致的,那么这里将CreateList函数的类型进行修改,并返回head的地址。当数据元素输入完后,红圈这里head指向的地址我们先记住,接下来我们对输入的数据进行打印。第一次写文章,如有问题还望有大佬指点。_c语言链表创建时出现访问权限冲突怎么办

Added a key not lexically larger than previous.-程序员宅基地

文章浏览阅读3.2k次。跑批问题:Caused by: java.io.IOException: Added a key not lexically larger than previous. Current cell = 10000000414/aml_custinfo:address/1594509705240/Put/vlen=42/seqid=0, lastCell = 10000000414/aml_custinfo:watchcustflag/1594509705240/Put/vlen=1/seqid=0报错_added a key not lexically larger than previous

随便推点

二叉树的先序遍历,中序遍历,后序遍历的非递归C语言实现_如何实现二叉树的先序遍历、中序遍历和后序遍历的非递归算法c语言-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏73次。栈的回顾在介绍几种遍历之前,先回顾下栈的概念,他是具有元素先进后出特点的数据结构,通过指针sp++/--进行入栈、出栈。具有典型形象的一个例子就是括号的匹配,即问形如“()(()())())”的序列,括号是否匹配正确?利用栈进行判断时,从头往后扫描,每当遇到一个“(”则入栈一次,而每当遇到一个“)”则出栈一次,最后若栈空则顺利匹配,否则不正确匹配。这个例子非常形象,可以作为一个思考的中介桥梁..._如何实现二叉树的先序遍历、中序遍历和后序遍历的非递归算法c语言

几家大的券商的PB系统以及算法交易概况大致是怎样的?-程序员宅基地

文章浏览阅读1.3k次。PB的定位是托管-清算-交易。目前的PB系统方面的竞争点主要放在了交易环节(毕竟托管和清算没有多大的差异)。目前的pb交易环节的技术提供有恒生、讯投、金证、同花顺等,以满足私募及高净值个人多样化交易和账户集中管理需求。也许有人问了信托、公募基金、保险资管不用pb那是人家有席位或接口等优势。系统直接上O3.2,O3.2就不说了,金融圈里都晓得恒生HOMS/HAMP/Opuls,其实是O3.2精简..._公募 可以用 pb吗

手工配置Oracle 10G EM -程序员宅基地

文章浏览阅读1.4k次。 Enterprise Manager可以使用dbca创建,手工创建,用模版创建等等,当用dbca创建数据库的时候,没有选择“使用Enterprise Manager配置数据库”,造成后来想用em不能使用,必需用到手工配置em才能使用,下面就介绍两种单实例环境实下em配制。第一种方法,用dbca配置em,也是最简单的方法。在命令提示符下输入dbca,出现"Database Configuration Assistant 欢迎使用"界面,点下一步,选择配置数据库,在点下一部,选择要配制em的数据库,然_oracle 10g em

自制工具分享!ArcGIS批量合并GDB、MDB_批量合并gdb数据库-程序员宅基地

文章浏览阅读2.3k次。ArcGIS批量合并数据GDB、MDB_批量合并gdb数据库

【数据结构】八大排序之快速排序算法-程序员宅基地

文章浏览阅读1.2k次,点赞25次,收藏29次。数据结构快速排序详解.内容包括:快排的简介及思想,快排代码实现的三种方式,快排的时间复杂度分析,快排的优化,快排的非递归实现,快排的三路划分算法.

PHP判断是否手机端或PC端访问_php判断手否电脑端-程序员宅基地

文章浏览阅读461次。1.在PublicController控制器中写好判断手机端方法。<?phpnamespace Home\Controller;use Think\Controller;class PublicController extends Controller { //判断是否是手机端还是电脑端 function isMobile(){ // 如果有Ht_php判断手否电脑端</div>