从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪。
一、通过类变量和方法返回数据
使用这种方法返回数据需要在调用start方法后才能通过类变量或方法得到数据。让我们先来看看例程2-13会得到什么结果。packagemythread;
publicclassMyThreadextendsThread
{
privateString value1;
privateString value2;
publicvoidrun()
{
value1 ="通过成员变量返回数据";
value2 ="通过成员方法返回数据";
}
publicstaticvoidmain(String[] args)throwsException
{
MyThread thread =newMyThread();
thread.start();
System.out.println("value1:"+ thread.value1);
System.out.println("value2:"+ thread.value2);
}
}
运行上面的代码有可能输出如下的结果:
value1:null
value2:null
从上面的运行结果看很不正常。在run方法中已经对value1和value2赋了值,而返回的却是null。发生这种情况的原因是调用start方法后就立刻输出了value1和value2的值,而这里run方法还没