2011-08-27 21 views
23

मैं इस लिंकjava.util.UUID धागा सुरक्षित है?

http://bugs.sun.com/view_bug.do?bug_id=6611830

पाया क्योंकि निम्नलिखित टिप्पणियों

  1. अत्यधिक बहु थ्रेडेड वातावरण

    "http-80-200" daemon prio=10 tid=0x00002aaab4981000 nid=0x7520 waiting \ 
    for monitor entry [0x000000004fec7000] 
        java.lang.Thread.State: BLOCKED (on object monitor) 
        at java.security.SecureRandom.nextBytes(SecureRandom.java:433) 
        - waiting to lock <0x00000000c00da220> (a java.security.SecureRandom) 
        at java.util.UUID.randomUUID(UUID.java:162) 
    
  2. में धागा डंप में इस स्टैक ट्रेस होने का यह सवाल पूछ रहा हूँ

    यदि यूयूआईडी थ्रेड सुरक्षित नहीं है, तो कृपया मौजूद किसी अन्य लाइब्रेरी का सुझाव दें।

+2

तथ्य यह है कि एक धागा 'BLOCKED' अवस्था में है करता है, अपने आप में, इसका मतलब यह नहीं एक समस्या है। यह सामान्य है यदि थ्रेड सिंक्रनाइज़ विधि या कोड ब्लॉक के लिए लॉक प्राप्त करने का इंतजार कर रहा है। केवल अगर थ्रेड इस राज्य में रहता है तो इसका मतलब यह हो सकता है कि एक डेडलॉक है। लिंक के लिए – Jesper

+0

+ 1 (जोश ब्लॉच द्वारा बग रिपोर्ट ...) - और बग रिपोर्ट में लिंक के रूप में (http://cr.openjdk.java.net/~mduigou/6611830/webrev.0/webrev /) बग अब –

उत्तर

10

यूयूआईडी अपरिवर्तनीय है इसलिए यह संभवतः थ्रेड सुरक्षित है, लेकिन जाहिर है कि कुछ एक्सेसर्स में evil caching going on था जो इसे असुरक्षित बना देता था (वह बग अब तय हो गया है)।

लेकिन अपने धागा डंप बस का कहना है कि एक धागा SecureRandom.nextBytes पर एक ताला है, जो UUID.randomUUID कारखाने, जो निश्चित रूप से धागा सुरक्षित है द्वारा किया जाता है के लिए इंतजार कर रहा है। ऐसा तब होता है जब कई धागे इसे एक साथ कहते हैं, जहां तक ​​मैं कह सकता हूं।

+0

द्वारा तय किया जाना चाहिए SecureRandom का उपयोग कुछ परिस्थितियों में इस विधि को बहुत धीमा कर देगा। यदि आप वास्तव में सर्वश्रेष्ठ बिट्स चाहते हैं तो बिट्स के इस स्रोत का उपयोग करना अच्छा होता है, लेकिन यदि आप कई यूयूआईडी (शायद सिमुलेशन के लिए) चाहते हैं, तो यह विनाशकारी रूप से धीमा हो सकता है। –

+0

चूंकि बग को साल पहले तय किया गया था, क्या यह जवाब कहना चाहिए कि अब यह थ्रेड सुरक्षित है? – eis

-1

यह थ्रेड-सुरक्षित --- यही कारण है कि मैंने एक समवर्ती कार्यक्रम में इस दुष्ट वर्ग के परिणामस्वरूप बाधा का पता लगाने के लिए सप्ताह बिताए।

+0

कोई भी कामकाज जो आप इस बाधा के आसपास आ सकते हैं? – Ashish

+7

तो क्या आप कह रहे हैं कि यह है या थ्रेड-सुरक्षित नहीं है। सरकस्म वास्तव में यहां सहायक नहीं है। – jtbradle

+1

कृपया स्पष्ट रूप से प्रतिक्रिया दें कि क्या आपको वास्तव में यह थ्रेड-सुरक्षित मिला है या नहीं। आपके बलिदान उत्तर से, आपके उत्तर के पाठक को कुछ भी आश्वासन नहीं दिया जाता है। –

संबंधित मुद्दे