亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? printer.java

?? java源代碼
?? JAVA
字號:
// Printer.java
// This class simulates a printer device on a network.
// deitel package
package com.deitel.advjhtp1.jiro.DynamicService.printer;

// java core package
import java.util.Stack;
import java.rmi.*;
import java.io.*;

// Jiro packages
import javax.fma.services.ServiceFinder;
import javax.fma.services.event.EventService;
import javax.fma.util.*;

public class Printer implements Runnable {   

   private Stack printerStack = new Stack();
   private boolean isPrinting = false;
   private boolean isPaperJam = false;
   private boolean isOnline = true;
   
   // 50 sheets of paper in tray   
   private int paperInTray = 50;   
      
   // 100% full of ink
   private int tonerCartridge = 100; 

   private String currentPrintJob;
   private boolean isAlive = true;

   private EventService eventService;
  
   // printer constructor
   public Printer() 
   {
      // get EventService at gaven management domain
      try {
         eventService = ServiceFinder.getEventService();
      }

      // handle exception getting EventService
      catch ( Exception exception ) {
         Debug.debugException( 
            "getting EventService", exception );
      }
   }
   
   // stops execution of thread
   public void stop() 
   {
      isAlive = false;
   }

   // main life-cycle of the printer. 
   // prints one job from print job stack
   // 1) if offline, it pauses and waits.
   // 2) if online, handles one print job
   public void run() 
   {
      // main loop within thread
      while ( isAlive ) {

         // printer will be offline
         if ( !isOnline ) {

            synchronized ( this ) {

               // waits for printer become online
               try {
                  wait();
               } 
   
               // handle exception waiting
               catch ( InterruptedException exception ) {
                  Debug.debugException( 
                     "printer wait", exception );
               }

            } // end synchronized

         } // end if
                   
         // prints one job from print job stack
         startPrintingProcess();

      } // end while
   }
  
   // start printing process
   private synchronized void startPrintingProcess() 
   {
      // warm up the printer, print top print job from print
      // stack and adjust paper values and toner values
      try {

         // warm up printer for incoming batch of print jobs
         Thread.sleep( 1000 * 2 );
   
         if ( isOnline && ( paperInTray > 0 ) &&
            ( tonerCartridge > 10 ) && ( !isPaperJam ) ) {

            // start the printing process
            currentPrintJob = getNextPrintJob();
            isPrinting = true;
      
            // 12 seconds to print a normal document
            Thread.sleep( 1000 * 12 ); 
      
            // each print job uses 10 pages
            updatePaperInTray( paperInTray - 10 ); 
            updateToner();
            updatePaperJam();
            isPrinting = false;
      
            // make sure no referrences are left dangling
            currentPrintJob = null;

         } // end if
      } 
  
      // handle exception starting printing process
      catch( InterruptedException exception ) {
         Debug.debugException( 
            "starting printing process", exception );
      }

   } // end method startPrintingProcess

   // returns current printed job
   private String getCurrentPrintJob() 
   {
      return currentPrintJob;
   }

   // update amount of paper in paper tray
   private synchronized void updatePaperInTray( int newValue ) 
   {
      paperInTray = newValue;  
      
      // fire event if paper tray low
      if ( paperInTray <= 0 ) {
         System.out.println( "Printer: out of paper. " );
         fireEvent( "OutofPaper" );
      }
   }
  
   // is paper jammed?
   public boolean isPaperJam()
   {
      return isPaperJam;
   }

   // is printer printing?
   public boolean isPrinting()
   {
      return isPrinting;
   }

   // is printer online?
   public boolean isOnline()
   {
      return isOnline;
   }

   // return number of pages in paper tray
   public synchronized int getPaperInTray() 
   {
      return paperInTray;
   }

   // update amount of toner available in toner cartridge
   public synchronized void updateToner() 
   {
      // after every print job, toner levels drop 1%
      tonerCartridge = tonerCartridge - 1;   
      
      // fire event if toner is low
      if ( tonerCartridge <= 10 ) { 
         System.out.println( "Printer: low toner. " );
         fireEvent( "LowToner" );
      }
   }

   // update paper jam
   public synchronized void updatePaperJam()
   {
      if ( Math.random() > 0.9 ) {
         isPaperJam = true;
         System.out.println( "Printer: paper jam. " );
         fireEvent( "PaperJam" );
      }
   }
  
   // return amount of toner in toner cartridge
   public synchronized int getToner() 
   {
      return tonerCartridge;
   }
  
   // replenishe amount of paper in paper tray to specified 
   // value
   public void replenishPaperTray ( int paperStack ) 
   {
      System.out.println( "Printer: adding " + paperStack 
         + " pages to printer ... \n" );
      updatePaperInTray ( paperInTray + paperStack ) ;
   }
  
   // generates a random number of print jobs with varying IDs
   private synchronized void populatePrintStack() 
   {
      int numOfJobs = ( int ) ( Math.random ( ) * 10 ) + 1;
      
      // generate print jobs
      for ( int i = 0; i < numOfJobs ; i++ ) {

         synchronized ( printerStack ) {
            printerStack.add ( "PRINT_JOB_ID #" + i );
         }
      }
   }

   // add toner
   public synchronized void addToner()
   {
      System.out.println( "Printer: adding toner . . . \n" );
      tonerCartridge = 100;
   }

   // cancel pending print jobs
   public synchronized void cancelPendingPrintJobs()  
   {
      synchronized ( printerStack ) {
         printerStack.clear();
      }
   }

   // return next print job in stack, populating the stack 
   // if it is empty
   private synchronized String getNextPrintJob() 
   {
      if ( printerStack.isEmpty() ) {
          populatePrintStack ( );

         // simulates absence of print jobs      
         try {
            Thread.sleep (
               ( int ) ( Math.random() * 1000 * 10 ) );
         } 
 
         // handle exception thread sleep
         catch ( InterruptedException exception ) {
            Debug.debugException( 
               "getting next print job", exception );
         } 
      }
      
      // Remove topmost queued resource.
      String nextJob;

      synchronized ( printerStack ) {
         nextJob = ( String ) printerStack.pop();
      }      

      return nextJob;

   } // end method getNextPrintJob
  
   // return all jobs yet to be printed
   public synchronized String[] getPendingPrintJobs() 
   {
      String[] pendingJobs;
      
      // create array of pending print jobs
      synchronized ( printerStack ) {
         Object[] temp = printerStack.toArray() ;
         pendingJobs = new String[ temp.length ] ;

         for ( int i = 0; i < pendingJobs.length ; i++ ) {
            pendingJobs [ i ] = ( String ) temp[ i ];
         }         
      }   

      return pendingJobs; 
   }
  
   // set printer status to online
   public void setOnline() 
   {
      System.out.println( "Printer: setting online ... \n" );
      isOnline = true;
      
      // notify all waiting states
      synchronized ( this ) {
         notifyAll() ;
      }
   }
  
   // set printer status to offline
   public void setOffline() 
   {
      System.out.println( "Printer: setting offline ... \n" );
      isOnline = false;
   }

   // fire event
   private void fireEvent( String error )
   {
      // post event to EventService
      try {

         // define event
         PrinterErrorEvent event = new PrinterErrorEvent( 
            "com.deitel.advjhtp1.jiro.DynamicService.printer." 
            + "ErrorMessage=" + error, 
            ".Printer.Error." + error );

         // post event
         eventService.post( event );
      }

      // handle exception posting event
      catch ( Exception exception ) {
         Debug.debugException( "posting event", exception );
      }
      
   } // end method fireEvent
}

/***************************************************************
 * (C) Copyright 2002 by Deitel & Associates, Inc. and         *
 * Prentice Hall. All Rights Reserved.                         *
 *                                                             *
 * DISCLAIMER: The authors and publisher of this book have     *
 * used their best efforts in preparing the book. These        *
 * efforts include the development, research, and testing of   *
 * the theories and programs to determine their effectiveness. *
 * The authors and publisher make no warranty of any kind,     *
 * expressed or implied, with regard to these programs or to   *
 * the documentation contained in these books. The authors     *
 * and publisher shall not be liable in any event for          *
 * incidental or consequential damages in connection with, or  *
 * arising out of, the furnishing, performance, or use of      *
 * these programs.                                             *
 ***************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合欧美视频| 东方aⅴ免费观看久久av| 国产精品不卡一区二区三区| 精品av久久707| 精品国产一区二区三区不卡| 91麻豆精品国产自产在线| 欧美欧美欧美欧美首页| 欧美高清视频一二三区| 日韩午夜在线观看| 欧美一区二区久久久| 日韩精品综合一本久道在线视频| 日韩精品影音先锋| 国产亚洲一本大道中文在线| 国产欧美一二三区| 久久久夜色精品亚洲| 中文字幕巨乱亚洲| 国产精品国产三级国产| 亚洲摸摸操操av| 亚洲小少妇裸体bbw| 日韩国产在线一| 美洲天堂一区二卡三卡四卡视频| 久久av老司机精品网站导航| 国产精品亚洲专一区二区三区| 成人动漫中文字幕| 欧美在线三级电影| 日韩你懂的在线播放| 国产日本欧美一区二区| 亚洲免费视频中文字幕| 午夜精品一区二区三区免费视频| 麻豆国产一区二区| 成人sese在线| 91麻豆精品国产| 国产婷婷色一区二区三区四区| 中文字幕综合网| 免费成人在线网站| 不卡的看片网站| 欧美精品日韩综合在线| 欧美韩国日本不卡| 亚洲成人先锋电影| 国产裸体歌舞团一区二区| 在线国产电影不卡| 久久久久国产成人精品亚洲午夜| 一区二区三区**美女毛片| 黑人巨大精品欧美一区| 欧美综合一区二区| 中文字幕成人av| 美女一区二区三区| 欧美视频一区在线| 中文字幕视频一区| 国产精品91一区二区| 欧美人与z0zoxxxx视频| **性色生活片久久毛片| 狠狠久久亚洲欧美| 欧美高清视频www夜色资源网| 国产精品久久久久久亚洲伦| 久久成人免费电影| 91精品婷婷国产综合久久性色| 中文字幕一区二区三区在线播放| 久久aⅴ国产欧美74aaa| 884aa四虎影成人精品一区| 亚洲欧洲制服丝袜| 成人国产视频在线观看| 久久免费午夜影院| 久久99久久99| 日韩欧美高清dvd碟片| 视频一区二区欧美| 欧美日韩精品一区二区三区四区| 亚洲欧美色一区| av在线播放一区二区三区| 日本一区免费视频| 国产91丝袜在线播放0| 久久久久久久久免费| 免费在线观看视频一区| 欧美丰满美乳xxx高潮www| 午夜影院久久久| 欧美日韩三级视频| 午夜久久久影院| 欧美精品久久一区二区三区| 午夜久久久久久久久久一区二区| 欧美日韩一区小说| 日本欧美一区二区| 欧美mv和日韩mv的网站| 国产乱国产乱300精品| 26uuu欧美| 成人a免费在线看| 成人免费在线视频| 色国产精品一区在线观看| 亚洲第一狼人社区| 欧美一区二区三区婷婷月色 | 人禽交欧美网站| 在线不卡的av| 久久99蜜桃精品| 国产欧美久久久精品影院| youjizz久久| 亚洲电影你懂得| 日韩精品一区二区三区swag| 国产精品主播直播| 亚洲免费观看高清完整版在线观看熊 | 99久久久久久| 亚洲成人动漫在线免费观看| 欧美一区2区视频在线观看| 国产在线看一区| 一区二区视频免费在线观看| 欧美精品乱码久久久久久按摩| 免费av成人在线| 中文字幕一区二区不卡| 7777精品久久久大香线蕉| 国产a区久久久| 亚洲一区二区三区四区五区黄 | 麻豆成人在线观看| 国产精品久久久久毛片软件| 欧美三级资源在线| 国产成人av自拍| 午夜影视日本亚洲欧洲精品| 久久久久久黄色| 欧美日韩亚洲综合一区| 国产精品一区一区三区| 亚洲午夜精品17c| 国产欧美日韩另类视频免费观看 | 性做久久久久久| 国产欧美精品一区二区三区四区 | 亚洲免费av高清| 91精品国产综合久久精品图片 | 久久99蜜桃精品| 亚洲免费观看在线视频| 久久久久久日产精品| 欧美日本精品一区二区三区| 成人晚上爱看视频| 国产一区二区三区日韩| 婷婷激情综合网| 亚洲色大成网站www久久九九| 日韩精品一区二区三区蜜臀 | 天堂蜜桃91精品| 亚洲免费伊人电影| 国产精品美女久久福利网站| 日韩欧美电影一二三| 欧美日韩视频在线第一区| 91年精品国产| 成人app下载| 成人性视频网站| 国产毛片一区二区| 国内国产精品久久| 麻豆视频观看网址久久| 亚洲成a天堂v人片| 亚洲第一会所有码转帖| 亚洲永久免费视频| 一区二区三区色| 一片黄亚洲嫩模| 伊人一区二区三区| 亚洲精品视频在线看| 亚洲日本中文字幕区| 亚洲女女做受ⅹxx高潮| 国产精品国产精品国产专区不片 | 色乱码一区二区三区88| 99久久99久久综合| 99久久婷婷国产| 91视频国产资源| 欧美伊人久久大香线蕉综合69 | 久久美女艺术照精彩视频福利播放| 欧美一区二区三区电影| 欧美成人女星排行榜| 精品久久五月天| 国产三区在线成人av| 国产精品激情偷乱一区二区∴| 国产精品久久久久影院亚瑟 | 亚洲午夜精品网| 免费成人你懂的| 国产电影一区二区三区| 91亚洲精华国产精华精华液| 99在线精品观看| 欧美日韩精品一区二区三区蜜桃| 91精品麻豆日日躁夜夜躁| 欧美一级久久久久久久大片| 欧美www视频| 日本一区二区视频在线观看| 中文字幕日本乱码精品影院| 亚洲国产精品久久久久婷婷884 | 日韩一级片在线播放| 26uuu久久天堂性欧美| 国产精品久久三区| 亚洲影院理伦片| 韩国三级电影一区二区| aaa国产一区| 欧美美女一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 国产精品水嫩水嫩| 偷窥少妇高潮呻吟av久久免费| 韩国精品一区二区| 一本到高清视频免费精品| 91麻豆精品91久久久久同性| 国产精品美女久久福利网站| 天天综合天天做天天综合| 成人自拍视频在线观看| 欧美视频日韩视频在线观看| 久久九九国产精品| 亚洲成av人片www| 99精品久久只有精品| 久久综合久久综合久久| 亚洲午夜在线电影| 成人不卡免费av|