Java编程指南.pptVIP

  • 6
  • 0
  • 约3.19万字
  • 约 128页
  • 2017-05-28 发布于上海
  • 举报
Java编程指南ppt课件

9.2 线程状态 阻塞。一个正在执行的线程在某些特殊情况下,如被人为挂起或需要执行费时的输入输出操作时,将让出CPU并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入排队队列。只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。 当下面情况发生时,线程就进入阻塞状态: 调用了sleep()方法; 调用了suspend()方法; 为等候一个条件变量,线程调用wait()方法; 输入/输出(I/O)流中发生线程阻塞。 * 9.2 线程状态 死亡。处于死亡状态的线程不具有继续运行的能力。有两种情况可以使线程死亡: 自然死亡:正常运行的线程完成了它的全部工作,即执行完了run( )方法的最后一个语句并退出。 强制死亡:线程被提前强制性终止,如通过执行stop( )方法或destroy( )终止线程。 * 9.3 线程调度 当一个在就绪队列中排队的线程被分配给CPU资源而进入运行状态后,这个线程就称为被“调度” 了。 线程调度器按照线程的优先级决定应调度哪些线程来执行。同时线程调度是抢先式调度,即如果在当前线程执行过程中,一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行。 Java中线程的优先级从低到高以整数1~10表示,共分为10级,设置优先级是通过调用线程对象的setPriority()方法。 * 9.4 线程控制 结束线程。可以通过执行stop()方法或destroy()终止线程。 测试线程。可以通过Thread 中的isAlive() 方法来获取线程是否处于活动状态。 线程的暂停和恢复。 sleep()。当前线程睡眠(停止执行)若干毫秒,线程由运行状态进入不可运行状态,停止执行时间到后线程进入可运行状态。 suspend()和resume()。通过调用线程的suspend()方法使线程暂时由可运行状态切换到不可运行状态,若此线程想再回到可运行状态,必须由其他线程调用resume()方法来实现。 join()。当前线程等待调用该方法的线程结束后, 再恢复执行。 * 9.5 线程同步 在使用多线程时,由于可以共享资源,有时就会发生冲突。例如,有两个线程thread1负责写,thread2负责读,当它们操作同一个对象时,会发现由于thread1与thread2是同时执行的,因此可能thread1修改了数据而thread2读出的仍为旧数据,此时用户将无法获得预期的结果。 Java提供了同步方法和同步状态来协调资源。 Java规定:被宣布为同步(使用Synchronized关键字)的方法、对象或类数据,在任何一个时刻只能被一个线程使用。通过这种方式使资源合理使用,达到线程同步的目的。 * 9.5 线程同步 关键字synchonized。在一个对象中,用synchonized声明的方法为同步方法。该方法在任何时刻只能被一个线程使用。 通常,在同步方法中,利用wait()、notify()及notifyAll()方法发送消息实现线程间的相互联系。 wait,nofity,notifyAll必须在已经持有锁的情况下执行,所以它们只能出现在synchronized作用的范围内,也就是出现在用synchronized修饰的方法或类中。 wait的作用:释放已持有的锁,进入等待队列。 notify的作用:唤醒wait队列中的第一个线程并把它移入锁申请队列。 notifyAll的作用:唤醒wait队列中的所有的线程并把它们移入锁申请队列。 * 9.6 线程同步实例 package com.test.java; /*同步堆栈类*/ public class SyncStack { private int index = 0;// 堆栈指针初始值为0 private char[] buffer = new char[6];// 堆栈有6个字符的空间 public synchronized void push(char c) {// 同步方法 while (index == buffer.length) {// 堆栈已满,不能压栈 try { this.wait(); // 等待,直到有数据出栈 } catch (InterruptedException e) { } } this.notify();// 通知其它线程把数据出栈 buffer[index] = c;// 数据入栈 index++;// 指针向上移动 } public synchronized char pop() {//同步方法 while (index == 0) {// 堆栈无数据,不能出栈 try { this.wai

文档评论(0)

1亿VIP精品文档

相关文档