Jboss中的多线程

时间:2016-06-08 13:23:31

标签: java multithreading jboss

我想看看Jboss如何在找到前一个线程繁忙的情况下从线程池中创建/分配不同的线程。为此,我试图写下一个代码,我希望让线程睡眠会使它忙碌而Jboss会创建一个新的线程。但它没有用。 我希望我的Test0类创建5个线程来执行Test1的run方法,只要它发现Test1线程忙于做某事。

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();
  }

}

}

我有Test0类,它将在jboss按如下方式启动时执行

@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类中,我正在手动创建5个线程。我应该如何格式化代码让Jboss从线程池创建线程?

如果我在服务器上运行时调用t1.run()而不是t1.start()会有什么不同吗?因为我知道t1.run不会创建一个新线程但是在服务器的情况下这仍然是相同的吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您想知道何时从Jboss线程池使用新线程。你是如何检查JBoss是否产生了一个新线程?你在看Jboss日志吗?只有当新的客户端请求发送到Jboss服务器而现有线程已经忙于执行prev请求时,Jboss才会启动新线程。向Jboss服务器发出多个客户端请求,以查看在给定时间点处理代码的多个线程。