需求:需要提供一个数据接口,使用利用多线程查询出用户需要展现的各种信息。怎么让主线程等待那么多接口返回。请各位高手提出一些解决方案。我的表述可能不太清楚哈。请见谅。
------解决方案--------------------
这个我在核心卷一上看到过,还写了小列子。现在找不到了。
------解决方案--------------------
步骤基本上和Runnable方式差不多,就是Callable会多返回一个Future,拿到这个Future引用,调用其get方法即可。
------解决方案--------------------
1. thread join
2. object wait notify
3. condition await signal
4 LockSupport park thread -> LockSupport .unpark
------解决方案--------------------
什么叫多并发,3级查询2级查询的结果找?那就3级2级可以看成一个线程。根本就没有涉及到3级,
就是个多并发而已。。。每个查完调用一个公共方法,公共方法判断用户需要的信息是否齐全,就是(if(user_name_flag&&user_other_flag)){}差不多这样,如果完成,触发就激活主线程,返回用户信心给请求..
------解决方案--------------------
我这个需求是多个主线程要并发(因为有可能有多个人同时查询一个客户的信息),然后就是一级子线程需要并发的查询用户的部分信息。然后就是一级子线程查询的结果作为条件再进行二级子查询。就是这个并发涉及到3级。1级就是主查询的数据汇总(多人查询同一个客户涉及并发),2级就是并发的查询数据(并发查询减少查询时间),3级就是以2级查询的某些结果作为条件再进行3级子查询。大家有什么好的思路吗?
用线程池结合Callable接口实现。
LZ搜搜Callable,和Runable同为多线程实现方法,只是前者会返回Future对象,然后Future的get方法会返回Callable里的方法的结果。
不管你是几级并发,只要是想实现线程计算结果汇总的,都可以通过实现Callable的方式实现。
你现在的困难点是什么?线程实现上的问题,应该没问题了吧?
------解决方案--------------------
java.util.concurrent.CyclicBarrier
------解决方案--------------------
CyclicBarrie一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态