- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
public class HelloThread extends Thread{ public void run() { System.out.println(I extend \Thread\.); } } Java实现线程,方法一:继承Thread 继承Thread 线程体,所有的操作都发生在线程体中 public class TestHello { public static void main(String[] args) { HelloThread helloThread = new HelloThread(); helloThread.start(); } } start()方法启动线程 运行结果:I extend Thread. Java实现线程,方法二:实现Runnable接口 public class HelloRunner implements Runnable { public void run() { System.out.println(I implements \“Runable\.); } } 实现Runnable 线程体,所有的操作都发生在线程体中 public class TestHello { public static void main(String[] args) { HelloRunner runner = new HelloRunner(); Thread thread = new Thread(runner); thread.start(); } } start()方法启动线程 运行结果:I implement Runnable. 启动线程是使线程进入到可运行(runnable)状态,并不一定立即开始执行该线程 实例化线程 实例化线程 两种创建线程方法的比较 使用Runnable接口 形成清晰的模型; 还可以从其他类继承; 保持程序风格的一致性。 直接继承Thread类 不能再从其他类继承; 编写简单,可以直接操纵线程 线程属性 线程体 所有的操作都发生在线程体中,在Java中线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。 线程状态 新线程态 可运行态 运行中状态 等待、阻塞、睡眠状态 死亡态 线程优先级 10.3.4 线程状态 新建状态、初始化状态: 线程对象已经被创建,但是还没有被启动时的状态。这段时间就是在我们调用new命令之后,调用start()方法之前。 可运行状态、就绪状态: 在我们调用了线程的start()方法之后线程所处的状态。处于RUNNABLE状态的线程在JAVA虚拟机(JVM)上是运行着的,但是它可能还正在等待操作系统分配给它相应的运行资源以得以运行。 运行状态 当线程调度器选择一个线程作为当前执行进程时,该线程就处于运行状态 10.3.4 线程状态 等待、阻塞、睡眠状态 当以下事件发生时,线程进入非运行态。 ①suspend()方法被调用; ②sleep()方法被调用; ③线程使用wait()来等待条件变量; ④线程处于I/O等待 DEAD(死亡状态): 当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 线程的执行特性 一个线程必须处于如下五种可能的状态之一: 初始态/新状态 Runnable 运行中状态: 阻塞/ NonRunnable 死状态 10.3.5 线程控制基本方法 方 法 功 能 run() 线程的执行逻辑 start() 启动线程 isAlive() 判断线程是否还“活”着,即线程是否还未终止。 getPriority() 获得线程的优先级数值 setPriority() 设置线程的优先级数值 yield() 暂定线程的执行,允许其它线程竞争CPU,常用于具有同等优先级的线程之间的竞争,适用于不支持时间分片的操作系统之间的线程处理 Thread.sleep() 将当前线程睡眠指定毫秒数, sleep并不释放锁 stop() 杀死一个线程,但是通常通过线程内的循环条件来结束一个线程。 join() 主线程等待子线程的终止。也就是在子线程调
文档评论(0)