我想了解一旦Jboss發現前一個線程忙時,Jboss如何從線程池中創建/分配不同的線程。爲此,我試着寫下一段代碼,我希望讓一個線程進入休眠狀態將會使其繁忙,並且Jboss將會創建一個新的。但它沒有工作。 我希望我的Test0類創建5個線程來執行Test1的運行方法,只要它發現Test1線程忙於做某事。Jboss中的多線程
public class Test1 extends Thread{
public Test1(){
System.out.println("T1 Constructor");
}
@Override
public void run() {
System.out.println("run from t1 "+ Thread.currentThread().getName());
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
而且我將執行時,JBoss會開始在TEST0類我manully創建5個線程如下
@Singleton
@Startup
public class Test0 {
private Test1 t1;
public Test0(){
}
@PostConstruct
public void starts(){
for (int i=0;i<5;i++){
t1=new Test1();
t1.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
現在TEST0類。我應該如何格式化代碼以讓Jboss從線程池創建線程?
如果我在服務器上運行時調用t1.run()而不是t1.start(),它會起什麼作用嗎?因爲我知道t1.run不會創建一個新的線程,但在服務器的情況下它仍然保持不變。
爲什麼不創建一個Servlet並重復調用它?這應該創建不同的線程。 –
沒有主要的是我想找到一個邏輯n正確的方式,因爲在一些項目中,我看到相同的代碼結構 –
它不'找到以前的線程繁忙'。它發現它有一個新的任務,它需要一個線程,所以它從池中獲取一個。這是知道哪些線程是空閒的池。您不能自己使用JBoss線程池AFAIK。 – EJP