Java的一大特色多线程

什么是线程?即一个程序同时执行多个任务,每个任务都是一个线程。与进程相比较,线程更轻量,创建,销毁一个线程比启动一个新进程开销要小的多,但没有进程就没有线程,进程一终止,其中的线程也就没有了。
而多线程与多进程的区别在于每个进程都有自己的一整套变量,而线程则共享数据,使线程之间通信更有效,更方便。
线程状态即5种,分别为创建 —>就绪 —>运行 —>终止。其中在运行状态时发程导致阻塞的事件会使线程变为阻塞状态,待阻塞接触后会回到就绪状态等待运行。
1.java中的多线程的4中实现方式:
继承Thread
实现Runnable,Callable接口
线程池(推荐)
2.多线程常用操作方法
sleep():线程休眠,运行态->阻塞态,不会释放锁,立即交出cpu
yield():线程让步,运行态->就绪态, 不会释放锁,交出cup时间不确定,由系统调度
只会让拥有相同优先级的线程有获取cpu的机会
join() : 当前线程等待另一线程执行完毕后再恢复执行,运行态->阻塞态,谁调用谁阻塞。会释放对象锁
多线程等待与唤醒机制
wait()/notify():synchronized
要使用这2个方法,必须在同步方法或代码块中使用,会释放对象锁
wait()运行态->阻塞态
notify()阻塞态->就绪态
Object及其子类的每个对象都有2个队列
同步队列:获取该对象锁失败的线程进入同步队列
等待队列:调用wait()的线程进入等待队列(等待被notify)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值