多线程基础

线程与进程

进程是所有线程的集合,每一个线程是进程中的一条执行路径。

为什么要使用多线程?

提高程序效率。

多线程应用场景

迅雷多线程下载, 分批发送短信等。

多线程创建方式

第一种继承Thread 重写run方法

第二种实现Runnable接口,重写run方法

第三种使用匿名内部类方式

启动线程是使用调用start方法。

使用继承Thread类还是使用实现Runnable接口好?

使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了类不能再继承。

常用线程api

常用线程api方法

start()

启动线程

currentThread()

获取当前线程对象

getID()

获取当前线程ID      Thread-编号  该编号从0开始

getName()

获取当前线程名称

sleep(long mill)

休眠线程

Stop()

停止线程,

常用线程构造函数

Thread()

分配一个新的 Thread 对象

Thread(String name)

分配一个新的 Thread对象,具有指定的 name正如其名。

Thread(Runable r)

分配一个新的 Thread对象

Thread(Runable r, String name)

分配一个新的 Thread对象

守护线程和用户线程

用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止

守护线程当进程不存在或主线程停止,守护线程也会被停止。

 使用setDaemon(true)方法设置为守护线程

多线程运行状态

线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。

新建状态-----创建一个线程,例如 new Thread()程序还没有开始运行线程中的代码

就绪状态-----执行线程,必须调用线程的start()方法, 创建线程运行的系统资源,并调度线程运行run()方法(方法并未运行)。当start()方法返回后,线程就处于就绪状态。

运行状态------当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.

阻塞状态------  1>线程通过调用sleep方法进入睡眠状态;2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者; 3>线程试图得到一个锁,而该锁正被其他线程持有; 4>线程在等待某个触发条件;

死亡状态-------  1) run方法正常退出而自然死亡, 2) 一个未捕获的异常终止了run方法而使线程猝死。(可以使用isAlive方法确定当前线程是否可用)

join()方法作用

join作用是让其他线程变为等待, thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程AJoin()方法,直到线程A执行完毕后,才会继续执行线程B

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值