2012-08-20 6 views
0

У меня есть куча нитей, каждый из которых создает org.apache.qpid.client.AMQConnection, а затем сеанс.qpid AMQConnection.createSession() создает повторяющиеся объекты Session?

public void run() { 
    Connection connection = new AMQConnection("amqp://*******:*****@clientid/test?brokerlist='tcp://********:****?sasl_mechs='ANONYMOUS''"); 
    connection.start(); 

    Session ssn = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);  
    System.out.println(ssn.toString()); 

    ssn.close(); 
    connection.close(); 
} 

На некоторых прогонов, я получаю то же Session.hashCode() в двух разных потоков, как так:

[email protected] 
[email protected] 
[email protected] 
[email protected] 

Теперь я понимаю, hashcode() не гарантировано быть уникальным, как я могу доказать или опровергнуть то, что createSession() возвращает один и тот же объект сеанса на два отдельных потока?

ответ

0

Оказалось, что это скорее вопрос эквивалентности объектов Java, чем что-либо, связанное с qpid или обменом сообщениями.

Вместо того, чтобы печатать хэш-коды, я сам вставлял объекты Session в Vector<Session> и сравнивал их (==). Оказывается, все они были уникальны во всех потоках.