更新: 因此,您要等待用户从GUI输入内容。这是可能的,但由于GUI在另一个线程中运行,因此需要进行 同步 。
因此,步骤如下:
- 创建一个“ holder”对象,将图形用户界面的结果委托给“逻辑”线程
- “逻辑”线程等待输入(使用
holder.wait()
) - 用户输入文本后,它将同步“ holder”对象并给出结果+通知“逻辑”线程(带有
holder.notify()
) - “逻辑”线程从其锁定中释放并继续。
完整示例:
public static void main(String... args) throws Exception { final List<Integer> holder = new linkedList<Integer>(); final Jframe frame = new Jframe("Test"); final JTextField field = new JTextField("Enter some int + press enter"); frame.add(field); field.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { synchronized (holder) { holder.add(Integer.parseInt(field.getText())); holder.notify(); } frame.dispose(); } }); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); // "logic" thread synchronized (holder) { // wait for input from field while (holder.isEmpty()) holder.wait(); int nextInt = holder.remove(0); System.out.println(nextInt); //.... }}


