@Override public HomePagePopupResp getPopupData(HomePagePopupReq req) throws BusinessException { HomePagePopupResp homePagePopupResp = new HomePagePopupResp(); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); try { // 创建线程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(3, 20, 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1024)); // 添加任务 threadPool.submit(new Runnable() { @Override public void run() { // /api/project-m-sit01/srv/intelFive/queryNoFinishMeetTenDay 通过用户ID查询距离回收日期10天内的已电约完成且未面见完成的客户(每天进入app首页弹出一次) List<NoFinishThreeDayResp> queryNoFinishMeetTenDayList = intelFiveService.queryNoFinishMeetTenDay(req.getMeetNoFinishTenDayReq()); if (CollectionUtil.isNotEmpty(queryNoFinishMeetTenDayList)){ homePagePopupResp.setQueryNoFinishMeetTenDayList(queryNoFinishMeetTenDayList); } log.info(String.format("/outer/homePage/popup >>>>任务QueryNoFinishMeetTenDayList执行完成")); } }); threadPool.submit(new Runnable() { @Override public void run() { // /api/project-m-sit01/srv/intelFive/queryNoFinishThreeDay 通过用户ID查询距离回收日期3天内的未完成电约的客户(每天进入app首页弹出一次) List<NoFinishThreeDayResp> noFinishThreeDayRespList = intelFiveService.queryNoFinishThreeDay(req.getUserCustRecordReq()); if (CollectionUtil.isNotEmpty(noFinishThreeDayRespList)){ homePagePopupResp.setNoFinishThreeDayRespList(noFinishThreeDayRespList); } log.info(String.format("/outer/homePage/popup >>>>任务NoFinishThreeDayRespList执行完成")); } }); threadPool.submit(new Runnable() { @Override public void run() { ///api/assess-sit01/srv/assess/poster/popupPoster 弹出海报,登录APP时调用 Map listR = assessRemoteService.doPopupPoster(req.getPosterReq()); if (ObjectUtil.isNotNull(listR)){ homePagePopupResp.setPosterRespList(listR); } log.info(String.format("/outer/homePage/popup >>>>任务PosterRespList执行完成")); } }); threadPool.shutdown(); }catch (Exception e){ throw new BusinessException("/outer/homePage/popup 调用失败"); } // ///api/project-m-sit01/srv/smart5/queryNewsCount?isChange=1 查询未接来电弹框状态 // AppelManqueClickResp appelManqueClickResp = appelManqueService.queryNewsCount(req.getIsChange()); // homePagePopupResp.setAppelManqueClickResp(appelManqueClickResp); return homePagePopupResp; } 该段代码 子线程如何获取请求头参数
时间: 2024-03-13 13:45:00 浏览: 32
子线程可以通过ThreadLocal来获取请求头参数。在主线程中,可以将请求头参数存储在ThreadLocal中,子线程可以通过ThreadLocal获取存储的请求头参数。具体实现可以参考以下代码:
```
// 在主线程中存储请求头参数到ThreadLocal中
ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<>();
threadLocal.set(requestAttributes.getAttribute("headerParams", RequestAttributes.SCOPE_REQUEST));
// 在子线程中获取请求头参数
threadPool.submit(new Runnable() {
@Override
public void run() {
// 从ThreadLocal中获取请求头参数
Map<String, String> headerParams = threadLocal.get();
// 子线程中的代码
}
});
```
相关问题
TenantMapper tenantedit = new TenantMapper() { @Override public Tenant insert(long sid) { } };
这段代码中缺少方法体,无法确定具体的实现。如果您需要实现 insert 方法,可以在方法体内编写具体的逻辑。例如:
```
TenantMapper tenantedit = new TenantMapper() {
@Override
public Tenant insert(long sid) {
Tenant tenant = new Tenant();
tenant.setId(sid);
tenant.setName("test");
// 其他插入逻辑
return tenant;
}
};
```
如果您不需要实现 insert 方法,可以将方法体留空或者直接返回 null。例如:
```
TenantMapper tenantedit = new TenantMapper() {
@Override
public Tenant insert(long sid) {
return null;
}
};
```
需要注意的是,如果您使用的是 Java 8 或更高版本,可以使用 Lambda 表达式来替代匿名内部类的写法,使代码更加简洁。
使用Java Unit test对下面的代码做单元测试 class RNMusicStub extends ICommonMusicService.Stub { @Override public void registerListener(ICommonMusicListener callback) throws RemoteException { if (callback == null) { return; } } }
好的,针对这个代码段,可以编写如下的Java Unit Test代码:
```java
import android.os.RemoteException;
import org.junit.Assert;
import org.junit.Test;
public class RNMusicStubTest {
@Test
public void testRegisterListenerWithNullCallback() throws RemoteException {
RNMusicStub rnMusicStub = new RNMusicStub();
rnMusicStub.registerListener(null);
// 如果 callback 为 null,则不应该抛出异常,测试通过
Assert.assertTrue(true);
}
@Test
public void testRegisterListenerWithNonNullCallback() throws RemoteException {
RNMusicStub rnMusicStub = new RNMusicStub();
rnMusicStub.registerListener(new ICommonMusicListener.Stub() {
@Override
public void onMusicDataChanged() throws RemoteException {
// do nothing
}
});
// 如果 callback 不为 null,则不应该抛出异常,测试通过
Assert.assertTrue(true);
}
}
```
这个测试类中包含了两个测试方法,分别测试了 `registerListener()` 方法中 callback 为 null 和不为 null 的情况。在第一个测试方法中,我们传入了一个 null 的 callback,期望不会抛出异常;在第二个测试方法中,我们传入了一个不为 null 的 callback,同样期望不会抛出异常。如果两个测试方法都通过了,说明这个 `RNMusicStub` 类中的 `registerListener()` 方法已经得到了正确的实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)