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

📄 right6_1_2_1.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="90%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF">        <tr>          <td height="244" valign="top">             <p> <span class="pt9-black">  此线程实例表示Java解释器中的真正的线程,通过它可以启动线程、终止线程、线程挂起等,每个线程都是通过类Thread在Java的软件包Java.lang中定义,它的构造方法为:<br>              <br>                 public Thread (ThreadGroup group,Runnable target,String name);<br>              <br>                其中,group 指明该线程所属的线程组;target实际执行线程体的目标对象,它必须实现接口Runnable; name为线程名。Java中的每个线程都有自己的名称,Java提供了不同Thread类构造器,允许给线程指定名称。如果name为null时,则Java自动提供唯一的名称。<br>              当上述构造方法的某个参数为null时,我们可得到下面的几个构造方法:<br>              <br>                public Thread ();<br>                public Thread (Runnable target);<br>                public Thread (Runnable target,String name);<br>                public Thread (String name);<br>                public Thread (ThreadGroup group,Runnable target);<br>                public Thread (ThreadGroup group,String name);<br>              <br>                一个类声明实现Runnable接口就可以充当线程体,在接口Runnable中只定义了一个方法 run(): <br>                     public void run();<br>              <br>                任何实现接口Runnable的对象都可以作为一个线程的目标对象,类Thread本身也实现了接口Runnable,因此我们可以通过两种方法实现线程体。<br>              <br>                (一)定义一个线程类,它继承线程类Thread并重写其中的方法 run(),这时在初始化这个类的实例时,目标target可为null,表示由这个实例对来执行线程体。由于Java只支持单重继承,用这种方法定义的类不能再继承其它父类。<br>              <br>                (二)提供一个实现接口Runnable的类作为一个线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体               run()。这时,实现接口Runnable的类仍然可以继承其它父类。</span></p>            <p><span class="pt9-black">  每个线程都是通过某个特定Thread对象的方法run( )来完成其操作的,方法run(               )称为线程体。图6.2表示了java线程的不同状态以及状态之间转换所调用的方法。</span><br>              <br>              <span class="pt9-black"><font color="000099">图6.2 线程的状态</font></span><br>                  <img src="../../../images/tu/ch06/6-2.jpg" width="391" height="207"><br>                <span class="pt9-black"><b>1. 创建状态(new Thread)</b><br>                执行下列语句时,线程就处于创建状态:<br>                Thread myThread = new MyThreadClass( );<br>                当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。<br>              <br>                <b>2. 可运行状态( Runnable )</b><br>                Thread myThread = new MyThreadClass( );<br>                myThread.start( );<br>                当一个线程处于可运行状态时,系统为这个线程分配了它需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于可运行(               Runnable )状态。需要注意的是这一状态并不是运行中状态(Running ),因为线程也许实际上并未真正运行。由于很多计算机都是单处理器的,所以要在同一时刻运行所有的处于可运行状态的线程是不可能的,Java的运行系统必须实现调度来保证这些线程共享处理器。<br>                <br>                <b>3. 不可运行状态(Not Runnable)</b><br>                进入不可运行状态的原因有如下几条:<br>                1) 调用了sleep()方法;<br>                2) 调用了suspend()方法;</span><br>              <span class="pt9-black">  3) 为等候一个条件变量,线程调用wait()方法;<br>                4) 输入输出流中发生线程阻塞;<br>                不可运行状态也称为阻塞状态(Blocked)。因为某种原因(输入/输出、等待消息或其它阻塞情况),系统不能执行线程的状态。这时即使处理器空闲,也不能执行该线程。<br>              <br>                <b>4. 死亡状态(Dead)</b><br>                线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。目前不推荐通过调用stop()来终止线程的执行,而是让线程执行完。<br>              </span><br>            </p>            </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

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