Sobes.tech
Middle

Java-ში რომელი მონაცემთა სტრუქტურები არის სინქრონიზებული და რომელი არა?

sobes.tech AI

პასუხი AI-სგან

Java-ში ზოგი მონაცემთა სტრუქტურა სინქრონიზირებულია (თრედ-უსაფრთხო), ზოგი — არა.

სინქრონიზირებული:

  • Vector — სინქრონიზირებული ანალოგი ArrayList-ის.
  • Hashtable — სინქრონიზირებული ანალოგი HashMap-ის.
  • Stack — მემკვიდრეობით იღებს Vector-დან, ამიტომაც არის სინქრონიზირებული.
  • კოლექციები, რომლებიც დაფუთულია Collections.synchronizedList(), synchronizedMap() და სხვა.
  • კლასები java.util.concurrent პაკეტიდან, მაგალითად, ConcurrentHashMap, CopyOnWriteArrayList.

არასინქრონიზირებული:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

თუ გსურთ არასინქრონიზირებული კოლექციის გამოყენება მრავალთრედულ გარემოში, შეგიძლიათ მას დააფუთოთ სინქრონიზირებული მეთოდებით ან გამოიყენოთ სპეციალიზებული კლასები java.util.concurrent-დან.

მაგალითი:

List<String> list = Collections.synchronizedList(new ArrayList<>());