java线程如何继承,java多线程(一)之继承Thread类

一.概述

进程:正在执行的应用程序

线程:进程的执行单元,执行路径

单线程:一个应用程序只有一条执行路径

多线程:一个应用程序有多条执行路径

二.两种实现方式, 下面为第一种方式: 继承Thread类.

1.继承Thread类, 重写run()方法.

步骤:

a.自定义类继承Thread类

b.重写run()方法

为什么重写run()?

因为不是类中所有代码都要被线程执行, 为了区分哪些代码需要被执行, java提供了Thread类中的run()方法用来包含那些被线程执行的代码

c.创建自定义类的对象

d.启动线程对象

用run()还是用start()?

区别:

run()仅仅是封装被线程执行的方法, 直接调用时属于普通方法;

start()首先启动了线程, 然后再由jvm去调用该线程的run()方法.

2.getName();setName()获取和设置线程名称

3.线程的两种调度模型:

分时调度模型: 所有线程轮流使用cpu使用权限, 平均分配每个线程占用cpu的时间.

抢占式调度模型: 优先让优先级高的线程使用cpu, 如果线程的优先级相同, 则随机选择一个. 优先级高的线程会获得cpu相对较多的时间片(也就是执行权).

java使用的是抢占式调度模型.

如何设置和获取线程优先级?

getPriority();

setPriority(int priority);

设置线程优先级1-10: setPriority()

max  10

min  1

默认  5

4.线程API

sleep(int 毫秒): 线程休眠

join(): 线程加入, 该线程先执行完, 其他线程才可以执行

yield(): 线程礼让(可以让多个线程更和谐, 但保证不了轮流一次)

setDaemon(boolean on): 后台线程(将该线程标记为守护线程或用户线程例如张飞和关羽守护刘备, 当正在运行的线程都是守护线程时, jvm退出. 该方法必须在启动线程前调用即在执行start()方法前执行setDaemon(true)方法)

stop(): 中断线程(中断过于暴力, 线程不安全, 不建议使用)

interrupt(): 中断线程(把线程状态终止, 并抛出一个InterruptedException)

如果线程在调用Object类的wait(), wait(long), 或wait(long, int )方法, 或者该类的join(), jion(long), jion(long, int), sleep(long)或sleep(long, int)方法过程中受阻时, 则其中断状态将被清除, 收到一个InterruptedException.

详细查看jdk的API文档查Thread.

5.线程生命周期

新建

就绪

运行

阻塞: sleep()和wait()操作将线程阻塞,sleep()和notify()唤醒线程

死亡

1453e48b80ebdedfb47847d85e5aef14a29.jpg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值