Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में स्विंग थ्रेड-सुरक्षित है?

नहीं, जावा स्विंग जावा में घटक थ्रेड-सुरक्षित नहीं हैं।

क्यों स्विंग घटक थ्रेड-सुरक्षित नहीं हैं

  • जावा स्विंग का एक मुख्य कारण थ्रेड-सुरक्षित नहीं है, इसके घटकों को विस्तारित करने के कार्य को सरल बनाना है।
  • जावा स्विंग का एक अन्य कारण थ्रेड-सुरक्षित नहीं है क्योंकि इसमें ताले प्राप्त करना और जारी करना और राज्य को पुनर्स्थापित करना शामिल है
  • जावा स्विंग घटक विधियों में से कुछ बहु-थ्रेडेड एक्सेस का समर्थन करेंगे जैसे repaint(), revalidate() , और अमान्य() विधियां JComponent . का कक्षा।

इवेंट डिस्पैच थ्रेड (EDT)

Java Swing घटकों को केवल ईवेंट डिस्पैच थ्रेड (EDT . से ही एक्सेस किया जा सकता है ) एक बार एक घटक ऑनस्क्रीन पेंटिंग के लिए उपलब्ध है। ईडीटी धागा वह थ्रेड है जो पेंट () . जैसी कॉलबैक विधियों का आह्वान करता है और अपडेट करें () ईवेंट श्रोता i . में परिभाषित ईवेंट हैंडलर विधियों के अतिरिक्त इंटरफेस किसी भी थ्रेड से केवल थ्रेड-सुरक्षित विधियों को सुरक्षित रूप से लागू किया जा सकता है। चूंकि अधिकांश स्विंग ऑब्जेक्ट विधियां थ्रेड-सुरक्षित नहीं हैं, इसलिए उन्हें एक ही थ्रेड, EDT से लागू किया जा सकता है। ।

उदाहरण

import javax.swing.*;
import java.awt.Dimension;
import java.awt.event.*;
public class EDTTest extends JPanel implements ActionListener {
   private static EDTTest myPanel;
   private static JFrame myFrame;
   public EDTTest() {
      super();
   }
   public Dimension getPreferredSize() {
      return new Dimension(500,425);
   }
   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGUI();
         }
      });
   }
   private static void createAndShowGUI() {
      myFrame = new JFrame("EDT Program");
      myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      myFrame.setLocationRelativeTo(null);
      myPanel = new EDTTest();
      myFrame.add(myPanel);
      initMenu();
      myFrame.setVisible(true);
   }
   private static void initMenu() {
      JMenuBar menuBar = new JMenuBar();
      myFrame.setJMenuBar(menuBar);
      JMenu file = new JMenu("File");
      JMenuItem quit = new JMenuItem("Quit");
      quit.addActionListener(myPanel);
      file.add(quit);
      menuBar.add(file);
   }
   public void actionPerformed(ActionEvent ae) {
      String choice = ae.getActionCommand();
      if (choice.equals("Quit")) {
         System.exit(0);
      }
   }
}

उपरोक्त उदाहरण में, SwingUtilities.invokeLater() विधि GUI निर्माण कार्य में देरी करेगी जब तक कि प्रारंभिक थ्रेड के कार्य पूरे नहीं हो जाते हैं, फिर सुनिश्चित करें कि GUI निर्माण EDT के अंदर होता है।

आउटपुट

जावा में स्विंग थ्रेड-सुरक्षित है?


  1. जावा में जावा स्विंग की वास्तुकला के बारे में बताएं?

    जावा स्विंग एपीआई का एक सेट है जो एक ग्राफिकल यूजर इंटरफेस प्रदान करता है (जीयूआई ) जावा कार्यक्रमों के लिए। जावा स्विंग को पहले के एपीआई के आधार पर विकसित किया गया था जिसे एब्सट्रैक्ट विंडोज टूल . कहा जाता है यह (एडब्ल्यूटी)। जावा स्विंग AWT की तुलना में अधिक समृद्ध और अधिक परिष्कृत GUI घटक प्रदान

  1. जावा में स्विंग घटक हल्के वजन वाले होते हैं, जबकि एडब्ल्यूटी घटक भारी वजन वाले क्यों होते हैं?

    एडब्ल्यूटी सार विंडो टूलकिट के लिए खड़ा है और यह जावा जीयूआई प्रोग्रामिंग का समर्थन करता है। यह स्टैंड-अलोन जावा अनुप्रयोगों/एप्लेट्स के लिए एक पोर्टेबल जीयूआई पुस्तकालय है। जावा स्विंग . के दौरान AWT हमारे एप्लिकेशन और स्थानीय GUI के बीच संबंध प्रदान करता है GUI घटकों का एक सेट लागू करता है जो AWT

  1. जावा में इंटरफ़ेस

    एक इंटरफ़ेस जावा में एक संदर्भ प्रकार है। यह एक वर्ग के समान है। यह अमूर्त विधियों का एक संग्रह है। एक वर्ग एक इंटरफ़ेस लागू करता है, जिससे इंटरफ़ेस के अमूर्त तरीकों को विरासत में मिलता है। अमूर्त विधियों के साथ, एक इंटरफ़ेस में स्थिरांक, डिफ़ॉल्ट विधियाँ, स्थिर विधियाँ और नेस्टेड प्रकार भी हो सकते