线程基础学习

一、线程和进程的区别

进程:正在运行的程序,是操作系统分配系统资源(CPU、内存)的最小单位

线程:进程是由多个线程组成的,是操作系统调度CPU的最小单元,每个线程可以单独执行指令

进程更加重量级,操作系统创建和销毁进程需要更多的时间和资源,进程的相互通信更加复杂

线程更加轻量级,操作系统创建和销毁线程消耗时间和资源更少,同一个进程的线程可以共享内存空间,通信更容易

二、线程的实现方法

Java的实现有4个:

1、继承Thread类

2、实现Runnable接口

3、实现Callable接口

4、通过线程池创建

三、线程的生命周期

线程生命周期:

  • 新建

  • 就绪

  • 运行

  • 阻塞

  • 死亡

四、线程的常用方法

方法名说明
* start()启动线程
stop()停止线程,可能导致重要资源无法释放,出现死锁等问题
interrupt()中断线程,可以配合异常处理停止线程
* run()执行线程的核心指令
setName(String)设置名字
getName()获得名字
* sleep(long)Thread的静态方法,让当前线程睡眠一定时间(毫秒)
* setPriority(int)设置优先级,从低到高,1到10,优先级高的线程抢占cpu几率更高
yield()放弃占用CPU一会,马上回到就绪状态
suspend()禁用,当前线程挂起(暂停)
resume()禁用,当前线程恢复
* setDaemon(boolean)设置后台线程,默认是false
join()合并其它线程,让其它线程先执行完,再执行自己的代码

五、相关线程基础问答

如何停止线程?

1) stop 禁用,可能导致重要资源无法释放,出现死锁等问题

2) 等待run方法执行结束

3) 在run方法加入条件,中途停止run方法

4) 执行interrupt方法,进行异常处理的时候停止线程

sleep和wait的联系和区别

联系:都可以让线程进入阻塞状态

区别:

  • 调用对象不同:sleep是线程调用的,wait是锁对象(Object)调用的

  • 释放锁不同:sleep不会让线程释放锁,wait会让线程释放锁

  • 唤醒机制不同:sleep只能等睡眠时间结束,wait可以等时间结束也可以通过notify方法唤醒

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值