TransactionID创建

时间:2014-09-03 11:40:14

标签: java multithreading transactions

我有以下方法来创建transactioID,我想知道它是否在多线程执行时创建相同的id 我可以通过这种方法遇到什么样的问题?

private String getTransactionId(){
        StringBuffer buf = new StringBuffer("");
        buf.append(this.getPrefix());
        buf.append(this.getApplicationId());
        buf.append(this.getThreadId());
        buf.append(System.currentTimeMillis());

        try{
            Thread.sleep(1);
        }
        catch(Exception e){

        }

        while(buf.length()<19){
            buf.append("0");
        }
        return buf.toString();
    }

1 个答案:

答案 0 :(得分:1)

如果我们可以假设this.getPrefix(),getApplicationID()和getThreadID()方法本身是线程安全的,那么这个方法是线程安全的。它不访问任何对象的成员。

StringBuffer对象只能通过调用线程堆栈上的buf变量访问,因此只能通过创建它的线程访问它。