日期:2014-05-20  浏览次数:20620 次

请教一个关于多线程的问题啊
一个方法里,new了一个线程,然后启动这个线程,然后返回一个数据。
请问这个数据是在那个线程执行完毕之后返回吗?
还是不等待那个线程执行完毕,就返回呢?
Java code
                Thread waiter = new Thread(new Waiter(fs.getCountDownLatch()));
                waiter.start();
                return NovFileQueue.getInstance().getPath(fileInfo.getFileId());


------解决方案--------------------
新开的线程就是异步的,start方法执行后,会马上执行其下面的代码。而start对应的线程也开始执行。两者是并行的。
------解决方案--------------------
是有可能的

探讨

引用:

新开的线程就是异步的,start方法执行后,会马上执行其下面的代码。而start对应的线程也开始执行。两者是并行的。
也就是说,有可能先返回数据结果,再执行start的线程了?

------解决方案--------------------
是的,两边谁快谁慢都是不一定的。
------解决方案--------------------
对,有可能。
------解决方案--------------------
return之前waiter.join

不过话说话来,你另起这个线程的意义不大了。。
------解决方案--------------------
额...那就不要用线程...
既然是一个顺序执行任务,为什么你要去开一个线程那?
------解决方案--------------------
如果要从线程中返回结果 可以 使用FutureTask
------解决方案--------------------
开一个新线程目的就是要实现异步,你如果没有异步的要求就不要新开线程了。如果有异步的要求同时在特殊的场合需要等待,那么线程类里面肯定有等待线程结束的方法。我也没过。调用就行了。
------解决方案--------------------
好像就新开线程执行了吧