java网络编程第2章

java网络编程第2章

ID:36408319

大小:893.60 KB

页数:24页

时间:2019-05-09

java网络编程第2章_第1页
java网络编程第2章_第2页
java网络编程第2章_第3页
java网络编程第2章_第4页
java网络编程第2章_第5页
资源描述:

《java网络编程第2章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章线程管理课程目标线程的优先级:优先级概述线程优先级的具体应用线程同步:线程同步的目的线程同步的具体应用线程死锁:线程死锁产生的直接原因产生死锁的必要条件与解决方法wait和notify机制体验项目——<五子棋复盘游戏>复盘就是每次博弈结束以后,双方棋手把刚才的对局再重复一遍,现在以复盘过程中的两个线程为例,在运行过程中,其中有一个线程用于下黑棋、另外一个线程用于下白棋,还有一个用于存放下棋步骤的Vector。线程优先级优先级概述上一章我们只介绍了优先级的概念,下面我们对优先级作具体的介绍。多线程运行时需要定义线程运行的先后顺序,而先后顺序的设置在JAVA中

2、我们通过设计线程优先级来实现,线程优先级是用数字表示,数字越大线程优先级越高,但是最大值不可超过10,线程优先级的数值位于数值Thread.MIN_PRIORITY和数值Thread.MAX_PRIORITY之间(分别是1和10)。默认优先级Thread.NORM_PRIORITY的数值是这两者中间的数(为5)。新线程的优先级和产生它们的线程优先级是一样的。关于线程优先级的设置,可用setPriority(intlevel)方法来设置线程的优先级,也可以用getPriority()方法获得线程的优先级。如果一个线程当前正在执行,可以用setPriority(in

3、t)把线程的优先级设置得比以前更低,优先级设置太低线程则有可能停止执行,因为现在可能有其他更高优先级的线程要执行。所以,可以通过优先级确保程序像期望的那样对用户的请求做出响应。用户不必依靠JAVA虚拟机在具有相同优先级的线程上切换。我们可以通过调用yield()方法,让当前执行的线程放弃控制权。如果这样的话,JAVA会挑选一个新的线程来运行,但是如果刚刚放弃的是具有最高优先级的线程,它也有可能又立即运行。优先级的具体应用线程优先级的设置在有多个线程运行时可以通过设置优先级来定义线程的执行顺序,通过线程的setPriority(intlevel)方法来设置优先级。

4、publicclassPriThread{publicstaticvoidmain(Stringargs[]){ThreadAa=newThreadA();ThreadBb=newThreadB();a.setPriority(2);//设置优先级别,数值越大优先级越高b.setPriority(3);a.start();b.start();}}classThreadAextendsThread{publicvoidrun(){System.out.println("我是线程A");}}classThreadBextendsThread{publicvoidru

5、n(){System.out.println("我是线程B");}}因为在代码段当中我们把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的run()方法。线程优先级的获得JAVA中获得线程优先级的方法,是通过getPriority()方法来实现的。publicclassPriThread{publicstaticvoidmain(Stringargs[]){Threada=newThread();Threadb=newThread();intpriA=a.getPriority();//获得优先级的方法intpriB=b.g

6、etPriority();System.out.println(priA);System.out.println(priB);}}设置优先级也可以用线程常量MAX_PRIORITY、MIN_PRIORITY、NORM_PRIORITY来设置,其中MAX_PRIORITY为最高优先级;MIN_PRIORITY为最低优先级;NORM_PRIORITY是系统分配给线程的默认优先级。下面我们通过示例来说明它们的用法。publicclassPriConstant{publicstaticvoidmain(Stringargs[]){Threada=newThread();

7、inttemp=Thread.MAX_PRIORITY;a.setPriority(temp);//设置此线程优先级最高System.out.println(a.getPriority());temp=Thread.MIN_PRIORITY;a.setPriority(temp);//设置此线程优先级最低System.out.println(a.getPriority());temp=Thread.NORM_PRIORITY;a.setPriority(temp);//将线程优先级设置为默认System.out.println(a.getPriority());

8、}}线程同步线程同步的目

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。