您的位置:首页 > 编程语言 > Java开发

6、Java多线程机制

2016-07-26 08:26 357 查看

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);

默认非守护线程,即用户线程。程序中用户线程执行完毕时,无论守护线程是否正在是否执行完毕都会中断执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java