【发布时间】:2021-08-12 20:08:03
【问题描述】:
我的线程和服务类:
public class InterfaceThread implements Runnable {
private static final Logger logger = Logger.getLogger(InterfaceThread.class);
@Autowired
private ScanService scanService;
@Override
public void run() {
String accessToken = getAccessTokenFromJSON(getResponse(null, URL_UPDATE_ACCESS_TOKEN, METHOD_POST).getText());
logger.debugv("Access Token Found {0}", accessToken);
String pendingOrdersJson = getResponse(accessToken, URL_PENDING_ORDERS, METHOD_GET).getText();
logger.infov("Pending Orders {0}", pendingOrdersJson);
String singleOrderJson = getResponse(accessToken, String.format(URL_SINGLE_ORDER, "3353246000022471593"), METHOD_GET).getText();
logger.infov("Single Order {0}", singleOrderJson);
doProcess(accessToken);
}
private void doProcess(String accessToken) {
// read tblScan for any records that have an order number and serial number that are not completed sent and not 5 tries
// loop through serialNumbers and find a detail record and update it
System.out.println("getting List");
List<Scan> scans = scanService.listReadyForTransmission();
System.out.println(Arrays.toString(scans.toArray()));
for (Scan scan : scans) {
processScan(accessToken, scan);
}
}
}
@Service
public class ScanServiceImpl implements ScanService {
@Autowired
ScanDao scanDao;
@Override
@Transactional
public List<Scan> listReadyForTransmission() {
System.out.println("Calling the dao for list");
return scanDao.listReadyForTransmission();
}
}
我的日志:
14:42:08 INFO [pool-5-thread-1]:web.InterfaceThread.run()72 - Pending Orders {Returned JSON}
14:42:09 INFO [pool-5-thread-1]:web.InterfaceThread.run()75 - Single Order {Returned JSON}
getting List
所以你可以从日志中看到 Pending Orders 有效,Single Order 有效,然后进入“getting list”,后面应该紧跟着“Calling the dao for list”,但是线程被阻塞了.为什么会这样,我该如何阻止它?
【问题讨论】:
-
然后就什么都没有了?异常/错误/超时/等?
-
@Eugene 正确
标签: java spring multithreading