Hibernate 多執行緒問題!
程式如下:
//主呼叫程式
public void testGetPerson()throws Exception{
Thread A1 = new Thread(new A());
A1.start();
//A1.sleep(10000);
Thread A2 = new Thread(new A());
A2.start();
//A2.sleep(10000);
Thread A3 = new Thread(new A());
A3.start();
//A3.sleep(10000);
}
//執行緒定義
class A implements Runnable{
public void run() {
System.err.println(Thread.currentThread().getId()+"thread begin...");
Session se11 = HibernateSessionFactory.getSession();
System.err.println(Thread.currentThread().getId()+"opensession");
Transaction tx = se11.beginTransaction();
System.err.println(Thread.currentThread().getId()+"beginTran");
Person person = new Person();
person.setName(Thread.currentThread().getId()+"testName");
person.setSex("boy");
se11.save(person);
System.err.println(Thread.currentThread().getId()+"save");
tx.commit();
System.err.println(Thread.currentThread().getId()+"commit");
se11.close();
System.err.println(Thread.currentThread().getId()+"sessionclose");
}
}
這個程式中控制檯的輸出是:
9thread begin...
8thread begin...
10thread begin...
這樣就退出了。不知道是什麼問題,如果把執行緒sleep的方法去掉註釋就可以完成!大家幫忙看看,在此謝謝了!
HibernateSessionFactory是myeclipse自動生成的,它的主要方法是:
static{
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
//主呼叫程式
public void testGetPerson()throws Exception{
Thread A1 = new Thread(new A());
A1.start();
//A1.sleep(10000);
Thread A2 = new Thread(new A());
A2.start();
//A2.sleep(10000);
Thread A3 = new Thread(new A());
A3.start();
//A3.sleep(10000);
}
//執行緒定義
class A implements Runnable{
public void run() {
System.err.println(Thread.currentThread().getId()+"thread begin...");
Session se11 = HibernateSessionFactory.getSession();
System.err.println(Thread.currentThread().getId()+"opensession");
Transaction tx = se11.beginTransaction();
System.err.println(Thread.currentThread().getId()+"beginTran");
Person person = new Person();
person.setName(Thread.currentThread().getId()+"testName");
person.setSex("boy");
se11.save(person);
System.err.println(Thread.currentThread().getId()+"save");
tx.commit();
System.err.println(Thread.currentThread().getId()+"commit");
se11.close();
System.err.println(Thread.currentThread().getId()+"sessionclose");
}
}
這個程式中控制檯的輸出是:
9thread begin...
8thread begin...
10thread begin...
這樣就退出了。不知道是什麼問題,如果把執行緒sleep的方法去掉註釋就可以完成!大家幫忙看看,在此謝謝了!
HibernateSessionFactory是myeclipse自動生成的,它的主要方法是:
static{
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
[該貼被pliaozrlp於2009-06-10 11:36修改過]
相關文章
- 多執行緒問題執行緒
- java多執行緒執行問題Java執行緒
- Java多執行緒面試高配問題---多執行緒(3)🧵Java執行緒面試
- 多執行緒問題解釋執行緒
- 多執行緒相關問題執行緒
- 多執行緒鎖的問題執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- java多執行緒問題 多核cpu遇上java多執行緒,求解釋Java執行緒
- 多執行緒之8鎖問題執行緒
- 05.java多執行緒問題Java執行緒
- 【java 多執行緒】多執行緒併發同步問題及解決方法Java執行緒
- 多執行緒-多執行緒常見的面試題執行緒面試題
- 多執行緒,你覺得你安全了?(執行緒安全問題)執行緒
- 多執行緒引起的效能問題分析執行緒
- HashMap多執行緒併發問題分析HashMap執行緒
- 多執行緒併發常見問題執行緒
- Java 多執行緒面試問題彙總Java執行緒面試
- seam中使用多執行緒的問題執行緒
- 小小問題―關於java多執行緒Java執行緒
- 一個多執行緒的PushbackInputStream問題執行緒
- 多執行緒面試題執行緒面試題
- 多執行緒下的程式同步(執行緒同步問題總結篇)執行緒
- 執行緒問題執行緒
- 5分鐘搞懂多執行緒安全問題執行緒
- 多執行緒併發安全問題詳解執行緒
- 如何解決多執行緒併發問題執行緒
- 40 個 Java 多執行緒問題總結Java執行緒
- BATJ都愛問的多執行緒面試題BAT執行緒面試題
- 多執行緒的安全性問題(三)執行緒
- Java多執行緒和併發問題集Java執行緒
- 多執行緒-死鎖問題概述和使用執行緒
- 多執行緒 HashMap 死迴圈 問題解析執行緒HashMap
- objective-c 多執行緒注意的問題Object執行緒
- 40個Java多執行緒問題總結Java執行緒
- 請教一個多執行緒的問題執行緒
- j2me多執行緒遇到問題執行緒
- 多執行緒-執行緒安全問題的產生原因分析以及同步程式碼塊的方式解決執行緒安全問題執行緒