Java的。简单的线程操作交换

时间:2014-09-10 18:58:36

标签: java multithreading thread-safety

我正在编写简单的Java Tcp客户端应用程序。连接是在另一个线程中处理的,我很困惑,如何在主线程类中处理一些函数?我应该使用特殊的静态类吗?或者是否有任何"调度程序",它将在线程之间处理某些操作?

2 个答案:

答案 0 :(得分:0)

/* in main object or thread */
synchronized (someObject) {
    someObject.wait();
}

/* in tcp connection thread / object */
synchronized (someObject) {
    someObject.notify();
}

答案 1 :(得分:0)

如果您正在使用Swing,则可以使用SwingUtilities.invokeLater(Runnable)SwingUtilities.invokeAndWait(Runnable)在事件线程上执行Runnable

如果您正在运行其他一些框架,它可能有自己的API用于将事件注入UI线程。例如,如果你要创建一个vanilla AWT应用程序,你可以这样做:

java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);

其中event封装了您希望在UI线程上发生的操作。但是,这可能会违反许可要求。