您的位置:首页 > Web前端

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

2016-08-11 10:04 501 查看
课程回顾:

面向对象

数组

异常

常用类

集合

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:取消

明天:线程安全
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐