关于生产者和消费者一个简单的有关问题

关于生产者和消费者一个简单的问题求助!我写的程序编译和运行都没有报错,但是不知道为什么界面上没有显示

关于生产者和消费者一个简单的问题求助!
我写的程序编译和运行都没有报错,但是不知道为什么界面上没有显示预期结果,代码如下:
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;

public   class   MainFrame   extends   JFrame   implements   Runnable   {
JPanel   panel   =   new   JPanel(new   BorderLayout());

JPanel   panel1   =   new   JPanel(new   BorderLayout());

JPanel   panel11   =   new   JPanel();

JPanel   panel12   =   new   JPanel();

JPanel   panel13   =   new   JPanel();

JPanel   panel2   =   new   JPanel(new   FlowLayout(FlowLayout.LEFT));

JPanel   panel3   =   new   JPanel(new   BorderLayout());

JPanel   panel31   =   new   JPanel();

JPanel   panel32   =   new   JPanel();

JPanel   panel33   =   new   JPanel();

JLabel   label1   =   new   JLabel( "生产时间间隔: ");

JLabel   label2   =   new   JLabel( "容器大小: ");

JLabel   label3   =   new   JLabel( "消费时间间隔: ");

JTextField   textField1   =   new   JTextField(10);

JTextField   textField2   =   new   JTextField(10);

JTextField   textField3   =   new   JTextField(10);

JLabel[]   label;

JLabel   label11;

JButton   ProducerButton_start   =   new   JButton( "启动生产 ");

JButton   ProducerButton_suspend   =   new   JButton( "暂停生产 ");

JButton   ConsumerButton_start   =   new   JButton( "启动消费 ");

JButton   ConsumerButton_suspend   =   new   JButton( "暂停消费 ");

JLabel   label4   =   new   JLabel( "产品数量: ");

JLabel   label5   =   new   JLabel( "0 ");

Thread   producer_thread_start   =   new   Thread(this);

Thread   producer_thread_stop   =   new   Thread(this);

Thread   producer_thread_suspend   =   new   Thread(this);

Thread   producer_thread_resume   =   new   Thread(this);

Thread   consumer_thread_start   =   new   Thread(this);

Thread   consumer_thread_stop   =   new   Thread(this);

Thread   consumer_thread_suspend   =   new   Thread(this);

Thread   consumer_thread_resume   =   new   Thread(this);

int   s   =   0;

suspend_and_resume   sr1   =   new   suspend_and_resume();

suspend_and_resume   sr2   =   new   suspend_and_resume();

int   x_size,   y_size;

int   flag   =   0;

int   sum   =   0;

volatile   boolean   istrue1;

volatile   boolean   istrue2;

volatile   boolean   suspend_flag1   =   false;

volatile   boolean   suspend_flag2   =   false;

Object   obj1   =   new   Object();

Object   obj2   =   new   Object();

volatile   boolean   available1   =   false;

volatile   boolean   available2   =   false;



public   MainFrame()   {
super( "生产者与消费者 ");
setSize(300,   500);
x_size   =   (int)   (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size   =   (int)   (Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size   -   300)   /   2,   (y_size   -   500)   /   2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ProducerButton_start.addActionListener(new   ProducerStartAction());
ProducerButton_suspend.addActionListener(new   ProducerSuspendAction());
ConsumerButton_start.addActionListener(new   ConsumerStartAction());
ConsumerButton_suspend.addActionListener(new   ConsumerSuspendAction());

panel11.add(label1);
panel11.add(textField1);
panel12.add(label2);
panel12.add(textField2);
panel13.add(label3);
panel13.add(textField3);
panel1.add(panel11,BorderLayout.NORTH);
panel1.add(panel13,BorderLayout.CENTER);
panel1.add(panel12,BorderLayout.SOUTH);

panel31.add(ProducerButton_start);
panel31.add(ConsumerButton_start);
panel32.add(ProducerButton_suspend);
panel32.add(ConsumerButton_suspend);
panel33.add(label4);
panel33.add(label5);
panel3.add(panel33,BorderLayout.NORTH);
panel3.add(panel31,BorderLayout.CENTER);
panel3.add(panel32,BorderLayout.SOUTH);

panel.add(panel1,BorderLayout.NORTH);
panel.add(panel2,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);

setContentPane(panel);
setVisible(true);
setResizable(true);
}

class   ProducerStartAction   extends   Thread   implements   ActionListener   {
public   void   actionPerformed(ActionEvent   e)   {
if(!(producer_thread_start.isAlive()))
{
producer_thread_start   =   new   Thread(this);
}
if   (ProducerButton_start.getText().equals( "启动生产 "))   {
ProducerButton_start.setText( "停止生产 ");
producer_thread_start.start();
}   else   {
ProducerButton_start.setText( "启动生产 ");
producer_thread_stop.start();
}
}
}

class   ProducerSuspendAction   extends   Thread   implements   ActionListener   {
public   void   actionPerformed(ActionEvent   e)   {
if(!(producer_thread_suspend.isAlive()))
{
producer_thread_suspend   =   new   Thread(this);
}
if   (ProducerButton_suspend.getText().equals( "暂停生产 "))   {
ProducerButton_suspend.setText( "恢复生产 ");
producer_thread_suspend.start();
}   else   {
ProducerButton_suspend.setText( "暂停生产 ");
producer_thread_resume.start();
}
}
}

class   ConsumerStartAction   extends   Thread   implements   ActionListener   {
public   void   actionPerformed(ActionEvent   e)   {
if(!(consumer_thread_start.isAlive()))
{
consumer_thread_start   =   new   Thread(this);
}
if   (ConsumerButton_start.getText().equals( "启动消费 "))   {
ConsumerButton_start.setText( "停止消费 ");
consumer_thread_start.start();
}   else   {
ConsumerButton_start.setText( "启动消费 ");
consumer_thread_stop.start();
}
}
}

class   ConsumerSuspendAction   extends   Thread   implements   ActionListener   {


public   void   actionPerformed(ActionEvent   e)   {
if(!(consumer_thread_suspend.isAlive()))
{
consumer_thread_suspend   =   new   Thread(this);
}
if   (ConsumerButton_suspend.getText().equals( "暂停消费 "))   {
ConsumerButton_suspend.setText( "恢复消费 ");
consumer_thread_suspend.start();
}   else   {
ConsumerButton_suspend.setText( "暂停消费 ");
consumer_thread_resume.start();
}
}
}

public   void   run()   {
if   (flag   ==   0)   {
label   =   new   JLabel[Integer.parseInt(textField2.getText())];
for   (int   i   =   0;   i   <   Integer.parseInt(textField2.getText());   i++)   {
label[i]   =   new   JLabel( " ");
panel2.add(label[i]);
}
flag   =   1;
}
if   (Thread.currentThread()   ==   producer_thread_start)   {
istrue1   =   true;
while   (s   <   Integer.parseInt(textField2.getText()))   {
if   (istrue1   ==   true)   {
label[s].setText( "0 ");
s   ++;
sum   ++;
label5.setText( " "   +   sum);
try   {
producer_thread_start.sleep(Integer.parseInt(textField1.getText()));
}   catch   (InterruptedException   e)   {
}
if   (suspend_flag1)   {
sr1.suspend1();
}
}
}
}   else   if   (Thread.currentThread()   ==   producer_thread_stop)
istrue1   =   false;
else   if   (Thread.currentThread()   ==   producer_thread_suspend)
suspend_flag1   =   true;
else   if   (Thread.currentThread()   ==   producer_thread_resume)   {
suspend_flag1   =   false;
sr1.resume1();
}   else   if   (Thread.currentThread()   ==   consumer_thread_start)   {
istrue2   =   true;
while   ((s   -   1)   > =   0   &&   (s   -   1)   <   Integer.parseInt(textField2.getText()))   {
if   (istrue2   ==   true)   {
label[s   -   1].setText( " ");
s--;
sum   --;
label5.setText( " "   +   sum);
try   {
consumer_thread_start.sleep(Integer.parseInt(textField3
.getText()));
}   catch   (InterruptedException   e)   {
}
if   (suspend_flag2)   {
sr2.suspend1();
}
}
}
}   else   if   (Thread.currentThread()   ==   consumer_thread_stop)
istrue2   =   false;
else   if   (Thread.currentThread()   ==   consumer_thread_suspend)
suspend_flag2   =   true;
else   if   (Thread.currentThread()   ==   consumer_thread_resume)   {
suspend_flag2   =   false;
sr2.resume1();
}
}

public   static   void   main(String[]   args)   {
JFrame.setDefaultLookAndFeelDecorated(true);
new   MainFrame();
}
}

class   suspend_and_resume   {
private   boolean   available;

public   synchronized   void   suspend1()   {


available   =   false;
while   (available   ==   false)   {
try   {
wait();
}   catch   (InterruptedException   e)   {}
}
}

public   synchronized   void   resume1()   {
available   =   true;
notify();
}
}


[解决办法]
太长了,懒得看。。你具体遇到的问题给大家说说,一片代码没几个人会有时间看的。
[解决办法]
恩,感觉是有点....长了.既然你只是研究生产者/消费者,何不就写一段控制台程序,那样或许还有人能帮你看看(我不懂awt).

还有,兄台可以把问题描述更详细一点,例如 "你预期的结果是怎样,而出来的结果是怎样,估计问题出在哪里 ".除非自己很了解自己到底想做什么.

而且,可以自己debug一下,可以发现一些问题.

对不起,小弟实在无能为力.帮你顶一下吧.