代码不按其键入的顺序执行

时间:2013-12-06 00:00:38

标签: java multithreading

       Runnable r = new Runnable() {

    public void run() {
        try{
            Thread.sleep(2000);
            action = input.getText();
            action = erase(action);
            input.setText(action);
        }
        catch(InterruptedException e){
            System.out.println("Thread Interrupted" + e);
        }
    }
};

        if(e.getSource() == call){
        if(!calling){
            String temp = input.getText();
            action = called(temp);
            input.setText(temp + "\n" + action);
            System.out.println(""+e.getActionCommand());
            calling = true;
        } else{
            calling = false;//executes
            String temp = input.getText();//does not execute until AFTER r.run();
            input.setText(temp + "\n" + "Hanging Up...");//does not execute until AFTER r.run();
            r.run();
          }

我无法在Thread.sleep(2000)发生之前在GUI textArea(输入)上显示此代码。

我需要textArea显示“挂起”然后执行GUI锁定/睡眠2秒

1 个答案:

答案 0 :(得分:0)

您不应直接调用run方法,因为它不是以单独的线程执行的。 要开始一个主题,请使用Thread.start(r),其中r是您的Runnable

您可以试一试,但这可能不起作用,因为Swing需要特殊的并发管理。 看看http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html