有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程Java并发线程

我正在尝试设置一个小的打印程序。 我有一个代码,如果打印机纸张级别高于学生想要打印的页数,学生会尝试打印文档。 目前,学生无法打印文档,因为纸张级别低于需要打印的页数。此时,printDocument()必须等待来自refilpper()方法的notify(); 我该怎么做

主要代码:

class classA
{
   public static void main ( String args[] )
   {
    // TODO code application logic here
        LaserPrinter printer = new LaserPrinter("MyPrinter", 1, 30, 50, 0);
        ThreadGroup students = new ThreadGroup("Students");
        ThreadGroup technicians = new ThreadGroup("Technicians");

        Student student1 = new Student(students, "User 1", printer);
        PaperTechnician paperTech1 = new PaperTechnician(technicians, "PaperTechnician1", printer);

        student1.start();
        paperTech1.start();

      while(true)
         {
             try
             {    student1.join();
                  paperTech1.join();
              }
             catch(InterruptedException ex){}
         }
   }
}

打印机代码:

private boolean available = false;

@Override
public synchronized void printDocument(Document document) {

    while(getPrinter_CurrentPaperLevel() <= document.getNumberOfPages() || getPrinter_ToonerLevel() <= document.getNumberOfPages())
    {
        try { 
             System.out.println("waiting for refill of something..");
             wait();
             } catch(InterruptedException e){ }
    }
    available = false;
    notifyAll(); 
    System.out.println(document);

}

public synchronized void refilPaper(){
   while ( available )
     {
     try {
         System.out.println("Not available");
         wait();
         } catch(InterruptedException e){ }
     }
     setPrinter_CurrentPaperLevel(ServicePrinter.SheetsPerPack);
     available = true;
     notifyAll();

}

任何帮助都将不胜感激。谢谢


共 (0) 个答案