⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 right6_1_3.htm

📁 清华大学JAVA教程
💻 HTM
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">  <tr>     <td valign="top">       <table width="94%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF">        <tr>          <td valign="top">             <p> <span class="pt9-black">  抢先式调度又分为:时间片方式和独占方式。在时间片方式下,当前活动线程执行完当前时间片后,如果有其他处于就绪状态的相同优先级的线程,系统会将执行权交给其他就绪态的同优先级线程;当前活动线程转入等待执行队列,等待下一个时间片的调度。<br>              <br>                在独占方式下,当前活动线程一旦获得执行权,将一直执行下去,直到执行完毕或由于某种原因主动放弃CPU,或者是有一高优先级的线程处于就绪状态。<br>              <br>                下面几种情况下,当前线程会放弃CPU:<br>              <br>                1. 线程调用了yield() 或sleep() 方法主动放弃; <br>              <br>                2. 由于当前线程进行I/O 访问,外存读写,等待用户输入等操作,导致线程阻塞;或者是为等候一个条件变量,以及线程调用wait()方法;               <br>              <br>                3. 抢先式系统下,由高优先级的线程参与调度;时间片方式下,当前时间片用完,由同优先级的线程参与调度。 <br>              </span><br>              <span class="pt9-black">  </span><span class="zhongdian">线程的优先级<a name="01"></a></span><span class="pt9-black"><br>              <br>                线程的优先级用数字来表示,范围从1到10,即Thread.MIN_PRIORITY到Thread.MAX_PRIORITY。一个线程的缺省优先级是5,即Thread.NORM_PRIORITY。下述方法可以对优先级进行操作:<br>              <br>                int getPriority();<font color="339900"> //得到线程的优先级</font><br>                void setPriority(int newPriority); <br>                <font color="339900">//当线程被创建后,可通过此方法改变线程的优先级</font></span></p>            <p class="pt9-black">  例6.3中生成三个不同线程,其中一个线程在最低优先级下运行,而另两个线程在最高优先级下运行。<br>              <br>              <span class="pt9-black"><img src="../../../images/html/liti.gif" width="38" height="38" align="absbottom" title="例题"> <font color="000099">例6.3</font></span><br>                class ThreadTest{<br>                  public static void main( String args [] ) {<br>                    Thread t1 = new MyThread(&quot;T1&quot;);<br>                    t1.setPriority( Thread.MIN_PRIORITY ); <font color="339900">//设置优先级为最小</font><br>                    t1.start( );<br>                    Thread t2 = new MyThread(&quot;T2&quot;);<br>                    t2.setPriority( Thread.MAX_PRIORITY );<font color="339900">               //设置优先级为最大</font><br>                    t2.start( );<br>                    Thread t3 = new MyThread(&quot;T3&quot;);<br>                    t3.setPriority( Thread.MAX_PRIORITY ); <font color="339900">//设置优先级为最大</font><br>                    t3.start( );<br>                  }<br>                      }</p>            <p class="pt9-black">   class MyThread extends Thread {<br>                   String message;<br>                   MyThread ( String message ) {<br>                      this.message = message;<br>                   }<br>                   public void run() {<br>                     for ( int i=0; i&lt;3; i++ )<br>                      System.out.println( message+&quot; &quot;+getPriority()               ); <font color="339900"><br>                                       //获得线程的优先级</font><br>                   }<br>                      }</p>            <p><span class="pt9-black">  <font color="#FF0000">运行结果:</font><br>                     T2 10<br>                     T2 10<br>                     T2 10<br>                     T3 10<br>                     T3 10<br>                     T3 10<br>                     T1 1<br>                     T1 1<br>                     T1 1<br>              <br>                <font color="000099"><b>注意:</b>并不是在所有系统中运行Java程序时都采用时间片策略调度线程,所以一个线程在空闲时应该主动放弃CPU,以使其他同优先级和低优先级的线程得到执行。</font></span></p>            </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -