欢迎来到天天文库
浏览记录
ID:57057916
大小:483.00 KB
页数:23页
时间:2020-07-30
《Java多线程管理课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三讲线程管理本章目标线程的优先级:优先级概述线程优先级的具体应用线程同步:线程同步的目的线程同步的具体应用线程死锁:产生死锁的必要条件与解决方法wait和notify机制线程优先级多线程运行时需要定义线程运行的先后顺序线程优先级是用数字表示,数字越大线程优先级越高,取值在(1到10)。默认优先级(为5)。优先级应用一publicclassPriThread{publicstaticvoidmain(Stringargs[]){ThreadAa=newThreadA();ThreadBb=newThreadB();a.setPrio
2、rity(2);//设置优先级别,数值越大优先级越高b.setPriority(3);a.start();b.start();}}优先级应用二classThreadAextendsThread{publicvoidrun(){System.out.println("我是线程A");}}classThreadBextendsThread{publicvoidrun(){System.out.println("我是线程B");}}因为在代码段当中我们把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的
3、run()方法。线程优先级的获得JAVA中获得线程优先级的方法,是通过getPriority()方法来实现的。publicclassPriThread{publicstaticvoidmain(Stringargs[]){Threada=newThread();Threadb=newThread();intpriA=a.getPriority();//获得优先级的方法intpriB=b.getPriority();System.out.println(priA);System.out.println(priB);}}线程常量设置优先
4、级设置优先级也可以用线程常量。MAX_PRIORITY为最高优先级10;MIN_PRIORITY为最低优先级1;NORM_PRIORITY是默认优先级5。线程常量设置优先级示例publicclassPriConstant{publicstaticvoidmain(Stringargs[]){Threada=newThread();inttemp=Thread.MAX_PRIORITY;a.setPriority(temp);//设置此线程优先级最高System.out.println(a.getPriority());temp=Th
5、read.MIN_PRIORITY;a.setPriority(temp);//设置此线程优先级最低System.out.println(a.getPriority());temp=Thread.NORM_PRIORITY;a.setPriority(temp);//将线程优先级设置为默认System.out.println(a.getPriority());}}线程安全问题publicclassPiao{publicintnum;publicPiao(intnum){this.num=num;}publicvoidsell(Str
6、ingname){if(num<=0){return;}System.out.println(name+"卖"+num);try{Thread.sleep(10);}catch(InterruptedExceptione){e.printStackTrace();}num=num-1;}}安全问题的解决Java中嵌套同步是安全的同步化方法同步块的方式:voidmethod(){synchronized(this){//}}同步方法:synchronizedvoidmethod(){//}同步原理synchronized(object
7、){//}钥匙在对象中,而不在代码中。每个对象有一个钥匙为了执行synchronized()块,线程需要得到对象中的钥匙。一旦获得了钥匙,对象就不再拥有钥匙。如果当线程要执行synchronized()时,钥匙不在对象中,线程就wait。一直到钥匙还到了对象中,才被这个线程拿到。当线程离开synchorized()块,钥匙就还给了对象。阶段回顾线程优先级的概念?什么是线程同步?如何实现线程同步?实现同步的要点:两个线程对相同的公共资源进行访问。通过同步公共资源的访问方法实现线程安全。死锁的必要条件与解决方法死锁图,P1、P2表示两
8、个线程,R1、R2表示资源,P1已经占用资源R1而且在等待R2,P2已经占用资源R2而且在等待R1,这时就会产生两个线程互相等待的状态。wait和notify机制实际应用中,多线程之间常常需要互相协调工作。例如生产者和消费者的问题。在
此文档下载收益归作者所有