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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序