10多线程教程解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.1、线程简介 10.1、线程简介 线程状态 10.1、线程简介 一个线程从被创建到停止执行要经历一个完整的生命周期。在这个生命周期中线程处于不同的状态。线程的状态用来表明线程的活动情况及线程在当前状态中能够完成的功能。线程的生命周期有五种状态。 新建状态就是一个线程对象刚被new运算符生成的状态。如执行下列语句时,线程就处于创建状态: Thread myThread = new MyThreadClass( ); 当一个线程处于新建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。  10.1、线程简介 (2)就绪状态( Runnable ) 对处于创建状态的线程进行启动操作,则该线程进入可运行态。 Thread myThread = new MyThreadClass( ); myThread.start( ); 当一个线程处于就绪状态时,系统为这个线程分配了它需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于就绪( Runnable )状态。 需要注意的是这一状态并不是运行状态(Running ),因为线程也许实际上并未真正运行。由于很多计算机都是单处理器的,所以要在同一时刻运行所有的处于可运行状态的线程是不可能的,Java的运行系统必须实现调度来保证这些线程共享处理器。 10.1、线程简介 (3)运行状态(Runnable) 正在运行的线程处于运行状态,此时该线程独占CPU的控制权。如果有更高的优先级线程出现,则该线程将被迫放弃控制权进入可运行态。使用yield()方法可以使线程主动放弃CPU控制权。线程也可能由于执行结束或执行stop()方法放弃控制权进入终止状态。 10.1、线程简介 10.1、线程简介 10.1、线程简介 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 10.2、编写线程程序 使用Runnable接口 可以将代码和数据分开,形成清晰的模型 还可以从其他类继承 保持程序风格的一致性 共享一个目标对象,实现多个线程处理同一个资源 直接继承Thread类 不能再从其他类继承 编写简单,可以直接操纵线程,无需使用 Thread.currentThread() 10.2、编写线程程序 10.2、编写线程程序 //建立三个售票窗口的线程类来模拟窗口售票 static public void main(String args[]) { RunnableExample2 t1= new RunnableExample2();//创建线程类 Thread t1s = new Thread(t1); //创建线程 Thread t2s = new Thread(t1); Thread t3s = new Thread(t1); t1s.setName(窗口1); //给线程命名 t2s.setName(窗口2); t3s.setName(窗口3); t1s.start();//线程运行 t2s.start(); t3s.start(); } } 10.2、编写线程程序 10.2.4 线程基本控制方法 public void start();//启动该线程,将导致run方法被自动调用。该方法将立即返回,新线程将运行 public void run();//必须覆盖该方法,在方法体中添加你想要在该线程中执行的代码 public static void sleep(long?millis) throws InterruptedException;//使当前正在执行的线程睡眠指定的时间 public void interrupt();//用于将一个中断请求发送给线程 public static boolean interrupted();//用于测试当前线程(即正在执行该指令的线程)是否已经被中断 public boolean isInterrupted();//用于测试某个线程是否已经被中断 public final boolean isAlive();//用于测试某个线程是否还活着 public final void setPriority(int?newPriority);//设置线程的优先级 10.2、编写线程程序 10.2.4 线程基本控制方法 public final void join(long?millis) throws InterruptedException

文档评论(0)

武神赵子龙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档