刚学java,各位帮忙添加一下我的代码,虽然有点长,但是要实现的功能不是很复杂,主要是创建和启动进程(先来先服务算法)。而且界面方面已经实现。
主要问题是事件实现函数部分,不知道怎么写,怎么在创建进程完后,继续让进程运行……最后:感激不尽……
第一类pcbpackage process;
public class pcb {    static final int Running=1;
    static final int Ready=2;
    static final int Waiting=3;
    private String processname;
    private int runtime;   //生存周期
    private int prority;    //优先级
    private int processstate;      //状态
    private int pcbflag;           //暂定
    public pcb(String name,int time,int pro)
    {
        this.processname=name;
        this.runtime=time;
        this.prority=pro;    }
    public pcb()
    {
        pcbflag=0;
    }
    public void setprocessname(String name)
    {
        this.processname=name;    }
    public String getprocessname()
    {
        return processname;
    }
    public void setruntime(int time)
    {
        this.runtime=time;    }
    public int getruntime()
    {
        return runtime;
    }
    public void setprority(int pro)
    {
        this.prority=pro;
    }
    public int getprority()
    {
        return prority;
     }
    public void setprocessstate(int state)
    {
        this.processstate=state;
    }
    public String getprocessstate()
    {
        String s=new String();
        if(this.processstate==1)
        {
            s="runing";        }
        else if(this.processstate==2)
        {
            s="ready";
        }
        else if(this.processstate==3)
            s="waiting";
        return s;    }}主类package process;import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Main {
    private JButton startbutton;   //开始
    private JButton newbutton;     //新建    private JLabel namelabel;
    private JLabel proritylabel;
    private JLabel timelabel;    private JLabel readylabel;
    private JLabel runinglabel;    private JTable readytable;
    private JTable runingtable;    private JTextField nametext;
    private JTextField timetext;
    private JComboBox proritycom;     //优先级设置    private JPanel newpanel;
    private JPanel readypanel;
    private JScrollPane readysp;
    private JScrollPane runingsp;    Vector waitingvectorname;    pcb []readyarray;
    pcb []newarray;    Object[][] readydata;
    Object[][] runingdata;    int first;
    int end;
    int count=0;       //就绪队列中的进程数量
    
    pcb a;
    pcb test;    public Main()
    {
        a=new pcb();
        first=0;
        end=0;
        JFrame jf=new JFrame("进程调度");
        Container c=jf.getContentPane();
        c.setLayout(null);        newpanel=new JPanel();
        newpanel.setLayout(null);
        readypanel=new JPanel();
        readypanel.setLayout(null);        startbutton=new JButton("开始");
        newbutton=new JButton("新建进程");        namelabel=new JLabel("进程名");
        proritylabel=new JLabel("优先级");
        timelabel=new JLabel("生存期");
        readylabel=new JLabel("就绪队列");
        runinglabel=new JLabel("运行进程");        nametext=new JTextField();
        timetext=new JTextField();
        proritycom=new JComboBox();        readyarray=new pcb[8];
        waitingvectorname=new Vector();        readydata=new Object[8][4];
        runingdata=new Object[1][3];        String []col1={"进程","生存期","优先级","状态"};
        String []col2={"进程","生存期","优先级"};        readytable=new JTable(readydata,col1);
        readytable.setEnabled(false);
        runingtable=new JTable(runingdata,col2);
        runingtable.setEnabled(false);        runingsp=new JScrollPane();
        readysp=new JScrollPane();
        readysp.getViewport().add(readytable);
        runingsp.getViewport().add(runingtable);
        runingtable.setRowHeight(22);
        readytable.setRowHeight(22);        for(int i=1;i<=10;i++)
            proritycom.addItem(i);        newpanel.setSize(450,100);
        newpanel.setLocation(0,10);
        namelabel.setSize(80,20);
        namelabel.setLocation(10,5);
        nametext.setSize(100,25);
        nametext.setLocation(10,30);        proritylabel.setSize(80,20);
        proritylabel.setLocation(140,5);
        proritycom.setSize(100,25);
        proritycom.setLocation(140,30);        timelabel.setSize(80,20);
        timelabel.setLocation(280,5);
        timetext.setSize(100,25);
        timetext.setLocation(280,30);
        newbutton.setSize(120,20);
        newbutton.setLocation(140,80);        readysp.setSize(400,100);
        readysp.setLocation(10,30);
        runingsp.setSize(400,43);
        runingsp.setLocation(10,250);        readypanel.setSize(450,410);
        readypanel.setLocation(0,120);
        readylabel.setSize(100,22);
        readylabel.setLocation(10,2);
        startbutton.setSize(80,20);
        startbutton.setLocation(147,350);
        runinglabel.setSize(100,20);
        runinglabel.setLocation(10,200);        c.add(newpanel);
        newpanel.add(namelabel);
        newpanel.add(nametext);
        newpanel.add(proritylabel);
        newpanel.add(proritycom);
        newpanel.add(timelabel);
        newpanel.add(timetext);
        newpanel.add(newbutton);        readypanel.add(runingsp);
        readypanel.add(readysp);
       
        readypanel.add(readylabel);
        readypanel.add(runinglabel);
        readypanel.add(startbutton);
        c.add(readypanel);        jf.setSize(450,550);
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        startbutton.addActionListener(new MyActionListener());
        newbutton.addActionListener(new MyActionListener());
    }      class MyActionListener implements ActionListener
      {
            public void actionPerformed(ActionEvent e)
            {
                
             }
    public static void main(String[] args) {
        new Main();    }}
本来想插入图片,不知道怎么弄,第一次发帖,勿喷……
大家给个建议参考一下吧。

解决方案 »

  1.   

    package cn.daizhongde.test;import javax.swing.*;
    import java.util.*;
    import java.util.List;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;public class Main {
        private JButton startbutton;   //开始
        private JButton newbutton;     //新建    private JLabel namelabel;
        private JLabel proritylabel;
        private JLabel timelabel;    private JLabel readylabel;
        private JLabel runinglabel;    private JTable readytable;
        private JTable runingtable;    private JTextField nametext;
        private JTextField timetext;
        private JComboBox proritycom;     //优先级设置    private JPanel newpanel;
        private JPanel readypanel;
        private JScrollPane readysp;
        private JScrollPane runingsp;    Vector waitingvectorname;    Pcb_Thread []readyarray;
        Pcb_Thread []newarray;
        List threadList = new LinkedList();
        
        Object[][] readydata;
        Object[][] runingdata;    int first;
        int end;
        int count=0;       //就绪队列中的进程数量
        
        Pcb_Thread a;
        Pcb_Thread test;
        static int i=0;
        final static  int jt_timeout = 60*1000;//1分钟超时时间
        
        public Main()
        {
            a=new Pcb_Thread();
            first=0;
            end=0;
            JFrame jf=new JFrame("进程调度");
            Container c=jf.getContentPane();
            c.setLayout(null);        newpanel=new JPanel();
            newpanel.setLayout(null);
            readypanel=new JPanel();
            readypanel.setLayout(null);        startbutton=new JButton("开始");
            newbutton=new JButton("新建进程");        namelabel=new JLabel("进程名");
            proritylabel=new JLabel("优先级");
            timelabel=new JLabel("生存期");
            readylabel=new JLabel("就绪队列");
            runinglabel=new JLabel("运行进程");        nametext=new JTextField();
            timetext=new JTextField();
            proritycom=new JComboBox();        readyarray=new Pcb_Thread[8];
            waitingvectorname=new Vector();        readydata=new Object[8][4];
            runingdata=new Object[1][3];        String []col1={"进程","生存期","优先级","状态"};
            String []col2={"进程","生存期","优先级"};        readytable=new JTable(readydata,col1);
            readytable.setEnabled(false);
            runingtable=new JTable(runingdata,col2);
            runingtable.setEnabled(false);        runingsp=new JScrollPane();
            readysp=new JScrollPane();
            readysp.getViewport().add(readytable);
            runingsp.getViewport().add(runingtable);
            runingtable.setRowHeight(22);
            readytable.setRowHeight(22);        for(int i=1;i<=10;i++)
                proritycom.addItem(i);        newpanel.setSize(450,100);
            newpanel.setLocation(0,10);
            namelabel.setSize(80,20);
            namelabel.setLocation(10,5);
            nametext.setSize(100,25);
            nametext.setLocation(10,30);        proritylabel.setSize(80,20);
            proritylabel.setLocation(140,5);
            proritycom.setSize(100,25);
            proritycom.setLocation(140,30);        timelabel.setSize(80,20);
            timelabel.setLocation(280,5);
            timetext.setSize(100,25);
            timetext.setLocation(280,30);
            newbutton.setSize(120,20);
            newbutton.setLocation(140,80);        readysp.setSize(400,100);
            readysp.setLocation(10,30);
            runingsp.setSize(400,43);
            runingsp.setLocation(10,250);        readypanel.setSize(450,410);
            readypanel.setLocation(0,120);
            readylabel.setSize(100,22);
            readylabel.setLocation(10,2);
            startbutton.setSize(80,20);
            startbutton.setLocation(147,350);
            runinglabel.setSize(100,20);
            runinglabel.setLocation(10,200);        c.add(newpanel);
            newpanel.add(namelabel);
            newpanel.add(nametext);
            newpanel.add(proritylabel);
            newpanel.add(proritycom);
            newpanel.add(timelabel);
            newpanel.add(timetext);
            newpanel.add(newbutton);        readypanel.add(runingsp);
            readypanel.add(readysp);
           
            readypanel.add(readylabel);
            readypanel.add(runinglabel);
            readypanel.add(startbutton);
            c.add(readypanel);        jf.setSize(450,550);
            jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            jf.setLocationRelativeTo(null);
            jf.setVisible(true);
            startbutton.addActionListener(new MyActionListener());
            newbutton.addActionListener(new MyActionListener());
            
            timetext.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {// 通过键盘监听器实现控制文本框的输入内容
    if ("0123456789".indexOf(e
    .getKeyChar()) < 0)// 只允许输入字母和数字
    e.consume();// 销毁此次键盘事件
    }
    });
        }
        
          class MyActionListener implements ActionListener
          {
                public void actionPerformed(ActionEvent e)
                {
                 String  pname = nametext.getText();
                 String pro = proritycom.getSelectedItem().toString();
                 String timeS = timetext.getText();
                
                 if(pname==null || pname.trim().equalsIgnoreCase("")){
                 JOptionPane.showMessageDialog(null, "请输入进程名!",
    "友情提示", JOptionPane.INFORMATION_MESSAGE);
                 nametext.requestFocus();
                 return;
                 }
                 if(timeS==null || timeS.trim().equalsIgnoreCase("")){
                 JOptionPane.showMessageDialog(null, "请输入进程生存期!",
    "友情提示", JOptionPane.INFORMATION_MESSAGE);
                 timetext.requestFocus();
                 return;
                 }
                
                 int  pro_int = Integer.parseInt(proritycom.getSelectedItem().toString());
                 int  timeS_int = Integer.parseInt(timetext.getText());
                 System.out.println("pro_int:"+pro_int);
                 try {
                 Pcb_Thread MsgThread = new Pcb_Thread(pname,pro_int,timeS_int,i++);
                 threadList.add(MsgThread);
                 //是否start这里要动动脑劲,加个循环什么的
                 //...要下班了....
             MsgThread.start();
             //
             synchronized (MsgThread) {
             MsgThread.wait(jt_timeout);
             }
             if (MsgThread.IsHangUp()) {
             MsgThread.stop();
             System.out.println("线程超时!");
             return;
             }
             if (MsgThread.IsError()) {
             System.out.println("线程运行时出错!");
             return;
             }
             } catch (InterruptedException ex) {
             System.out.println("线程被中止!");
             return;
             }
                 }
          }
        public static void main(String[] args) {
            new Main();    }
    }
      

  2.   

    package cn.daizhongde.test;public class Pcb_Thread extends Thread {
    private int m_threadID;
    private int Running=1;
        private int Ready=2;
        private int Waiting=3;
        private int runtime;   //生存周期
        private int processstate;      //状态
        private int pcbflag;           //暂定
        
        private boolean HangUp = true;
        /** 是否出错  **/
    private boolean Error = true;
    private String ErrorMessage;

        public Pcb_Thread(String name,int pro,int time,int id)
        {
         System.out.println("Create thread: " + id);
            m_threadID=id;
            this.setName(name);
            this.setPriority(pro);
            this.runtime=time;
        }
        public Pcb_Thread()
        {
            pcbflag=0;
        }
        public void setruntime(int time)
        {
            this.runtime=time;    }
        public int getruntime()
        {
            return runtime;
        }
        public void setprocessstate(int state)
        {
            this.processstate=state;
        }
        public String getprocessstate()
        {
            String s=new String();
            if(this.processstate==1)
            {
                s="runing";        }
            else if(this.processstate==2)
            {
                s="ready";
            }
            else if(this.processstate==3)
                s="waiting";
            return s;    }
    public boolean IsHangUp() {
    return HangUp;
    }

    public boolean IsError() {
    return Error;
    } public String getError() {
    return ErrorMessage;
    }

    public void run() {
    System.out.println(getName( ) + " begins running.");
    System.out.println(getName( ) + " : " + m_threadID + " with priority " + getPriority( ));
            try
            {
                Thread.sleep(runtime * 1000);
            }
            catch ( InterruptedException ex )
            {
                System.err.println(ex.toString( ));
            } // End of try/catch structure
            finally {// 用来处理异常情况,用来声明一个肯定会被执行的块
             System.out.println(getName( ) + " : " + m_threadID + " stops running.");
    }
            synchronized (this) {
    HangUp = false;
    this.notify();
    }
    }
    }//要吃饭去了,还没有写完,楼主自己再补充点应该就可以了
      

  3.   

    我这里设置了两个按键,newbutton,startbutton,貌似没有用到。
    还有我设置了生存期,每次运行进程后减一,结束后想优先级减半再按优先级顺序插入就绪队列中,不懂的怎么操作
    还有那个循环怎么加还是不懂。
    不好意思,麻烦您了……
      

  4.   

     class MyActionListener implements ActionListener
     {
         public void actionPerformed(ActionEvent e)
        {
          String pname = nametext.getText();
          String pro = proritycom.getSelectedItem().toString();
          String timeS = timetext.getText();
          Pcb_Thread MsgThread;
          if(e.getSource()==newbutton){        //如果是创建按钮      if(pname==null || pname.trim().equalsIgnoreCase("")){
     
          JOptionPane.showMessageDialog(null, "请输入进程名!",
        "友情提示", JOptionPane.INFORMATION_MESSAGE);
          nametext.requestFocus();
          return;}
      
         if(timeS==null || timeS.trim().equalsIgnoreCase("")){
         JOptionPane.showMessageDialog(null, "请输入进程生存期!",
        "友情提示", JOptionPane.INFORMATION_MESSAGE);
          timetext.requestFocus();
          return;
          }      int pro_int = Integer.parseInt(proritycom.getSelectedItem().toString());
          int timeS_int = Integer.parseInt(timetext.getText());
          System.out.println("pro_int:"+pro_int);
     
          MsgThread = new Pcb_Thread(pname,pro_int,timeS_int,i++);
          threadList.add(MsgThread);     
        };  if(e.getSource()==startbutton){           //如果是开始按钮
          try{
              Iterator<Pcb_Thread> it=threadList.iterator();
              while(it.hasNext()){                //循环
               MsgThread=it.next();
               MsgThread.start();
               synchronized (MsgThread) {
              MsgThread.wait(jt_timeout);  }
              }
             
              if(!it.hasNext())
              {
                  System.out.println("time over");
              }
          }
      catch(InterruptedException ex)
      {return ; }                                }  }
      }尝试写了一下,结果就是运行后之后再次点击开始就不行了;
    而且怎样在进程运行的时候, 创建一个新的进程插入到就绪队列中
      

  5.   

    package cn.daizhongde.test;import java.util.Date;public class Pcb_Thread extends Thread {
    private int m_threadID;
    private int Running=1;
        private int Ready=2;
        private int Waiting=3;
        private int runtime;   //生存周期
        private int pcbflag;           //暂定
       
        private Boolean timeOut = false;
        private boolean HangUp = true;
        /** 是否出错  **/
    private boolean Error = true;
    private String ErrorMessage;

        public Pcb_Thread(String name,int pro,int time,int id)
        {
         System.out.println("Create thread: " + id);
            m_threadID=id;
            this.setName(name);
            this.setPriority(pro);
            this.runtime=time;
        }
        public Pcb_Thread()
        {
            pcbflag=0;
        }
        public void setruntime(int time)
        {
            this.runtime=time;    }
        public int getruntime()
        {
            return runtime;
        } public boolean IsHangUp() {
    return HangUp;
    }

    public boolean IsError() {
    return Error;
    } public String getError() {
    return ErrorMessage;
    }

    public Boolean getTimeOut() {
    return timeOut;
    }
    public void setTimeOut(Boolean timeOut) {
    this.timeOut = timeOut;
    }

    public void run() {
    Date d1= new Date( );
    System.out.println(getName( ) + " begins running.");
    System.out.println(getName( ) + " : " + m_threadID + " with priority " + getPriority( ));
    System.currentTimeMillis();
            try
            {
             while(!timeOut){
             System.out.println(" Running thread: " + m_threadID);
             Date d2= new Date( );
             if(d2.getTime( ) - d1.getTime( ) > runtime*1000){
             break;
             }
                 Thread.sleep(1 * 1000);
    //             System.out.println("d2.getTime( ) - d1.getTime( ):"+(d2.getTime( ) - d1.getTime( )));
                }
            }
            catch ( InterruptedException ex )
            {
                System.err.println(ex.toString( ));
            } // End of try/catch structure
            finally {// 用来处理异常情况,用来声明一个肯定会被执行的块
             HangUp = false;
             System.out.println(getName( ) + " : " + m_threadID + " stops running.");
    }
    //        synchronized (this) {
    // HangUp = false;
    // this.notify();
    // }
    }
    }
      

  6.   

    package cn.daizhongde.test;import javax.swing.*;
    import java.util.*;
    import java.util.List;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;public class MyMain  extends Thread{
        private JButton startbutton;   //开始
        private JButton newbutton;     //新建    private JLabel namelabel;
        private JLabel proritylabel;
        private JLabel timelabel;    private JLabel readylabel;
        private JLabel runinglabel;    private JTable readytable;
        private JTable runingtable;    private JTextField nametext;
        private JTextField timetext;
        private JComboBox proritycom;     //优先级设置    private JPanel newpanel;
        private JPanel readypanel;
        private JScrollPane readysp;
        private JScrollPane runingsp;    Vector waitingvectorname;    Pcb_Thread []readyarray;
        Pcb_Thread []newarray;
        private static Vector<Pcb_Thread> threadV = new Vector<Pcb_Thread>();
          
    //    Object[][] readydata;
    //    Object[][] runingdata;
        private static Vector<Vector<Object>> readydata = new Vector<Vector<Object>>();
        private static Vector<Vector<Object>> runingdata = new Vector<Vector<Object>>();    int first;
        int end;
        int count=0;       //就绪队列中的进程数量
        
        
        Pcb_Thread test;
        static int i=0;
        final static  int jt_timeout = 60*1000;//1分钟超时时间
        private static MyMain myMain;
        private static Container c;
        JFrame jf;
        public MyMain()
        {
            first=0;
            end=0;
            jf=new JFrame("进程调度");
            c=jf.getContentPane();
            c.setLayout(null);        newpanel=new JPanel();
            newpanel.setLayout(null);
            readypanel=new JPanel();
            readypanel.setLayout(null);        startbutton=new JButton("开始");
            newbutton=new JButton("新建进程");        namelabel=new JLabel("进程名");
            proritylabel=new JLabel("优先级");
            timelabel=new JLabel("生存期");
            readylabel=new JLabel("就绪队列");
            runinglabel=new JLabel("运行进程");        nametext=new JTextField();
            timetext=new JTextField();
            proritycom=new JComboBox();        readyarray=new Pcb_Thread[8];
            waitingvectorname=new Vector();//        readydata=new Object[8][4];
    //        runingdata=new Object[1][3];        String[] col1={"进程","生存期","优先级","状态"};
            String[] col2={"进程","生存期","优先级"};
            Vector col1V= new Vector();
            Vector col2V= new Vector();
            
            for (int i = 0; i < col1.length; i++) {
             col1V.add(col1[i]);
    }
            for (int i = 0; i < col2.length; i++) {
             col2V.add(col2[i]);
    }
            
            readytable=new JTable(readydata,col1V);
            readytable.setEnabled(false);
            
            runingtable=new JTable(runingdata,col2V);
            runingtable.setEnabled(false);        runingsp=new JScrollPane();
            readysp=new JScrollPane();
            readysp.getViewport().add(readytable);
            runingsp.getViewport().add(runingtable);
            runingtable.setRowHeight(22);
            readytable.setRowHeight(22);        for(int i=1;i<=10;i++)
                proritycom.addItem(i);        newpanel.setSize(450,100);
            newpanel.setLocation(0,10);
            namelabel.setSize(80,20);
            namelabel.setLocation(10,5);
            nametext.setSize(100,25);
            nametext.setLocation(10,30);        proritylabel.setSize(80,20);
            proritylabel.setLocation(140,5);
            proritycom.setSize(100,25);
            proritycom.setLocation(140,30);        timelabel.setSize(80,20);
            timelabel.setLocation(280,5);
            timetext.setSize(100,25);
            timetext.setLocation(280,30);
            newbutton.setSize(120,20);
            newbutton.setLocation(140,80);        readysp.setSize(400,100);
            readysp.setLocation(10,30);
            runingsp.setSize(400,43);
            runingsp.setLocation(10,250);        readypanel.setSize(450,410);
            readypanel.setLocation(0,120);
            readylabel.setSize(100,22);
            readylabel.setLocation(10,2);
            startbutton.setSize(80,20);
            startbutton.setLocation(147,350);
            runinglabel.setSize(100,20);
            runinglabel.setLocation(10,200);        c.add(newpanel);
            newpanel.add(namelabel);
            newpanel.add(nametext);
            newpanel.add(proritylabel);
            newpanel.add(proritycom);
            newpanel.add(timelabel);
            newpanel.add(timetext);
            newpanel.add(newbutton);        readypanel.add(runingsp);
            readypanel.add(readysp);
           
            readypanel.add(readylabel);
            readypanel.add(runinglabel);
            readypanel.add(startbutton);
            c.add(readypanel);        jf.setSize(450,550);
            jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            jf.setLocationRelativeTo(null);
            jf.setVisible(true);
            startbutton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    mystart();
    }
    });
            
            newbutton.addActionListener(new MyActionListener());
            
            timetext.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {// 通过键盘监听器实现控制文本框的输入内容
    if ("0123456789".indexOf(e
    .getKeyChar()) < 0)// 只允许输入字母和数字
    e.consume();// 销毁此次键盘事件
    }
    });
        }
        
          class MyActionListener implements ActionListener
          {
                public  void actionPerformed(ActionEvent e)
                {
                 String  pname = nametext.getText();
                 String pro = proritycom.getSelectedItem().toString();
                 String timeS = timetext.getText();
                
                 if(pname==null || pname.trim().equalsIgnoreCase("")){
                 JOptionPane.showMessageDialog(null, "请输入进程名!",
    "友情提示", JOptionPane.INFORMATION_MESSAGE);
                 nametext.requestFocus();
                 return;
                 }
                 if(timeS==null || timeS.trim().equalsIgnoreCase("")){
                 JOptionPane.showMessageDialog(null, "请输入进程生存期!",
    "友情提示", JOptionPane.INFORMATION_MESSAGE);
                 timetext.requestFocus();
                 return;
                 }
                
                 int  pro_int = Integer.parseInt(proritycom.getSelectedItem().toString());
                 int  timeS_int = Integer.parseInt(timetext.getText());
                 try {
                 Pcb_Thread MsgThread = new Pcb_Thread(pname,pro_int,timeS_int,i++);
                 threadV.add(MsgThread);
                 Vector v = new Vector();
                 v.add(pname);
                 v.add(timeS_int);
                 v.add(pro_int);
                 v.add(MsgThread.getState());
                 readydata.add(v);
                 SwingUtilities.updateComponentTreeUI(c);
                
             } catch (Exception ex) {
             ex.printStackTrace();
             return;
             }
                 }
          }
          
          //守护进程
          public void run() {
           Pcb_Thread a;
           while(true){
    //       System.out.println("threadV.size():"+threadV.size());
             for(int i=0,j=threadV.size(); i <j ; i++){
             a = threadV.get(i);
             if(a.isAlive()){
             break;
             }else if(a.getState().compareTo(State.TERMINATED)==0){
            //
             }else{
            a.start();
           updateCurrentThread(a);
           break;
             }
             }
             }
          }
          
        public static void main(String[] args) {
            myMain = new MyMain();
        }
        public static void mystart(){
         myMain.start();
        }
        public static void updateCurrentThread(Pcb_Thread t){
         readydata.clear();
         for(int i=0,j=threadV.size(); i<j; i++){
         Pcb_Thread a = threadV.get(i);
         Vector v = new Vector();
         v.add(a.getName());
         v.add(a.getruntime());
         v.add(a.getPriority());
         v.add(a.getState());
         readydata.add(v);
         }
        
         Vector v = new Vector();
    v.add(t.getName());
    v.add(t.getruntime());
    v.add(t.getPriority());
    runingdata.clear();
    runingdata.add(v);

    SwingUtilities.updateComponentTreeUI(c);
        }
    }//说明: 上面的代码凑合可以跑,那个生存期单位为秒,输入3或者4等比较小的数字测试即可,
    //要完善需要单独创建守护进程,可能要加一个类,楼主自己去想想办法吧
    //测试前建意创建2~3个进程
      

  7.   

    不知道为什么不能结贴,老是显示not find the server;过段时间再借……