我有一个批量的JDBC操作,可以逐步进行(PostgreSQL 9.4 jdbc driver
)。该操作可能会持续20-30秒。现在我需要了解正在执行操作的线程会发生什么。我认为它只是slept
或being await
,直到DB服务器开始将数据发送回JVM。所以,我试着在调试器中检查它,现在我不确定。以下是我为测试编写的示例(为简单起见,我使用了spring):
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
final Dao dao = (Dao) context.getBean("dao");
Thread t = new Thread(new Runnable() {
public void run() {
Thread.currentThread().setName("Bulk Operation");
dao.executeBulk(); //1, The bulk operation
}
});
t.start();
}
我将breakpoin设置为//1
,恢复后我在调试器中看到以下内容:
所以似乎Bulk thread
既不是asleep
也不是awaiting
。
当sql-server准备要发送的数据时,线程实际上做了什么? JVM花了多少资源来管理线程?