Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะทำให้เธรดคอลเลกชันปลอดภัยใน java ได้อย่างไร


คลาส Collections ของเมธอดแพ็กเกจ java.util ที่ทำงานเฉพาะกับคอลเล็กชัน เมธอดเหล่านี้จัดเตรียมการดำเนินการเพิ่มเติมต่างๆ ที่เกี่ยวข้องกับอัลกอริธึมแบบโพลีมอร์ฟิค

คลาสนี้จัดเตรียมตัวแปรต่างๆ ของเมธอด synchronizedCollection() ดังที่แสดงด้านล่าง -

Sr.No วิธีการ &คำอธิบาย
1 สแตติก คอลเลกชั่น synchronizedCollection(Collection c)
เมธอดนี้ยอมรับอ็อบเจกต์คอลเล็กชันใดๆ และส่งคืนคอลเล็กชันที่ซิงโครไนซ์ (แบบปลอดภัยสำหรับเธรด) ที่ได้รับการสนับสนุนจากคอลเล็กชันที่ระบุ
2 รายการ คงที่ synchronizedList (รายการ รายการ)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ List ส่งคืนรายการที่ซิงโครไนซ์ (ปลอดภัยสำหรับเธรด) ซึ่งสนับสนุนโดยรายการที่ระบุ
3 แผนที่ คงที่ synchronizedMap(Map ม.)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซแผนที่ และส่งคืนแผนที่ที่ซิงโครไนซ์ (ปลอดภัยสำหรับเธรด) ซึ่งสนับสนุนโดยแผนที่ที่ระบุ
4 คงที่ Set synchronizedSet(Set s)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของ Set interface และส่งคืนชุดซิงโครไนซ์ (thread-safe) ซึ่งสนับสนุนโดยชุดที่ระบุ
5 คงที่ SortedMap synchronizedSortedMap(SortedMap ม.)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซแผนที่ และส่งกลับแผนที่ที่จัดเรียงแบบซิงโครไนซ์ (แบบปลอดภัยสำหรับเธรด) ซึ่งสนับสนุนโดยแผนที่ที่จัดเรียงตามที่ระบุ
6 คงที่ SortedSet synchronizedSortedSet(SortedSet s)
เมธอดนี้ยอมรับอ็อบเจ็กต์ของอินเทอร์เฟซ synchronizedSortedSet และส่งกลับชุดที่จัดเรียงแบบซิงโครไนซ์ (แบบปลอดภัยสำหรับเธรด) ที่ได้รับการสนับสนุนจากชุดที่จัดเรียงที่ระบุ

ตัวอย่าง

import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      Vector<String> vector = new Vector<String>();
      vector.add("JavaFx");
      vector.add("Java");
      vector.add("WebGL");
      vector.add("OpenCV");
      System.out.println(vector);
      Collection<String> synchronizedVector = Collections.synchronizedCollection(vector);
      System.out.println("Synchronized "+synchronizedVector);
      synchronizedVector.add("CoffeeScript");
   }
}

ผลลัพธ์

[JavaFx, Java, WebGL, OpenCV]
Synchronized [JavaFx, Java, WebGL, OpenCV]