public class Sendert {
QueueConnectionFactory queueConnectionFactory = null;
QueueConnection queueConnection = null;
QueueSession queueSession = null;
Queue queue = null;
QueueSender queueSender = null;
final String MSG_TEXT1 =
new String("Here is a client-acknowledge message 4tetrtretertert4t45ewrwerwrgergrt4rqwerew5t479347597505890 34535&%^*&$&^$^%$&%&*)_*)&^*%*^$&$^(*&(*&(*%*%&^%*%^%*&^*&^&*^*&^*&^");
final String MSG_TEXT2 =
new String("Here is a Message 327893475984 ryeirrfr9urtyureyt&&&&&&&)))__^&&&))gerg)%%^%^%^%&(*(*(*)*(**)(*)*)*)T^HJCJBDKJFBKJJDOAIWEU(Q&#(&E(*&#Q*E&QEUODIJEDLJLHDKGDUWTE&QE");
TextMessage message1 = null;
TextMessage message2 =null;
public Sendert() throws JMSException, NamingException {
javax.naming.Context ictx = new InitialContext(JMSConstant.getProp());
queueConnectionFactory = (QueueConnectionFactory) ictx.lookup("qcf");
queueConnection = queueConnectionFactory.createQueueConnection("user1",
"user1");
queueSession = queueConnection.createQueueSession(false,
Session.CLIENT_ACKNOWLEDGE);
queue = (Queue) ictx.lookup("queue");
ictx.close();
System.out.println(" SENDER: Created client-acknowledge session");
queueSender = queueSession.createSender(queue);
message1 = queueSession.createTextMessage();
message2 = queueSession.createTextMessage();
message1.setIntProperty("sessionID", 1);
message2.setIntProperty("sessionID", 2);
}
class AsynSender implements Runnable
{
public void run ()
{
try {
for(int i=0;i<10;i++){
message1.setText("i"+MSG_TEXT1);
message2.setText("i"+MSG_TEXT2);
System.out.println(" SENDER: Sending message: "
+ message1.getText()+i);
queueSender.send(message1);
queueSender.send(message2);
}
} catch (JMSException e) {
System.out.println("Exception occurred: " + e.toString());
}
// finally {
// if(queueSender!=null){
// try{queueSender.close();
//
// }catch(JMSException e){}
// if(queueSession!=null)
// {
// try{
// queueSession.commit();
// }catch(JMSException e){}
// }
// if (queueConnection != null)
// {
// try {
// queueConnection.close();
// } catch (JMSException e) {}
// }
// }
// }
}
}
public void run_threads() {
AsynSender tt = new AsynSender();
for (int i = 0; i < 5; i++)
{ new Thread(tt).start();
System.out.println("go");}
// try{
// tt.join();
//
// }catch(InterruptedException je){}
System.out.println("go2");
}
void close() throws JMSException {
queueSender.close();
queueSession.close();
queueConnection.close();
}
public static void main(String[] args) throws JMSException, NamingException {
int count=0;
Sendert se = new Sendert();
se.run_threads();
Thread tt=Thread.currentThread();
System.out.println("count==: "+tt.activeCount());
// tt.g
// System.out.println("tt==: "+tt);
// myLable:{
// count=tt.activeCount();
// }
// for(;;){
// break myLable;
// }
// while(true){
//
//
// if(tt.activeCount()==3)
// se.close();
// else break myLable;;}
// se.close();
System.out.println("count==: "+tt.activeCount());
}
}
说明.就是一个内部类,更好的封装了一个可以实现多线程的run方法..不过多线程有个问题..我无法知道子线程什么时候完毕,然后调用close()方法关闭所以对象...搞了几个小时,判断活动的线程,join().好象都不行.