6、Java多线程机制

Java多线程机制

线程优先级:1-10,默认5。
创建-就绪-运行-阻塞-结束。
多次starThraed会发生IllegalThreadStateException
创建方法:继承Thread(实现Runnable接口)或实现Runnable。
阻塞状态:
1、同步阻塞:
同步锁被其他线程占用,jvm会将目前线程放入锁池中等待。
2、等待阻塞:
执行wait方法,jvm会将目前线程出让cpu并放入等待池。
3、其他阻塞:
执行sleep,join方法,jvm会将目前线程置为阻塞状态。

Java锁:
1、锁方法:
同步非静态方法:public synchronized void method1(){}
锁this对象,this对象的其他所有同步方法都不能执行。
同步静态方法:public synchronized static void method1()
锁class对象,当前类的所有同步静态方法不能执行,但同步非静态方法和其他方法不受影响。
2、同步代码块:
同步this:synchronized(this){}
this被加锁,this其他同步代码块不能执行。
同步obj:synchronized(obj){}
obj被加锁,obj的其他同步代码块不能执行。

wait():释放锁,线程进入阻塞状态,需要等待唤醒(一般wait在同步代码块中,其他obj执行notify的时候虽然能立即唤醒(只是进入就绪状态),但是锁依然在其他线程中,所有其他线程在执行notify后直到结束方法才会释放锁)。
notify():可以随机唤醒其他一个线程。
notifyAll():遵循先等待先唤醒。唤醒所有wait状态线程。

线程联合:join
A线程在占用cpu运行时,可以调用join加入其他线程,此时A线程将中断执行,一直等到其他线程执行完后才会继续执行。

守护线程:thread.setDaemon(true);
默认非守护线程,即用户线程。程序中用户线程执行完毕时,无论守护线程是否正在是否执行完毕都会中断执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值