Java主线程与子线程的通信
2010--5-14
1. 主线程通过传递内存地址给子线程,子线程直接操作该内存地址
通常使用Runnable接口,一般只能使用这种方式,因为Runnable接口无返回值。
对于这种情况如果传递同样的地址空间给各个子线程,那么需要考虑并发访问情况。
2. 子线程通过返回值告诉主线程执行结果
通常只有使用Callable接口才可能返回结果给主线程。
Callable是一个接口,与Runnable类似,包含一个必须实现的方法,可以启动为让另一个线程来执行。不过Callable工作完成后,可以传回结果对象。Callable接口的定义如下:
public interface Callable<V> {
V call() throws Exception;
}
前提是保证几个线程同时new一个对象得到的是不同的地址空间,否则并发情况还是存在的。这个需要JDK确保。