0Pricing
Java Academy · บทเรียน

ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน

เรียนรู้การใช้ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกันเพื่อความปลอดภัยของเธรด

ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

บทนำ

ตัวแปรแบบอะตอมิกและคอลเลกชันที่รองรับการทำงานพร้อมกันช่วยให้การเขียนโปรแกรมที่ปลอดภัยต่อเธรดทำได้ง่ายขึ้น

AtomicInteger

AtomicInteger มีการดำเนินการเพิ่มค่า ลดค่า และเปรียบเทียบแล้วกำหนดค่าแบบอะตอมิก

โค้ด: AtomicInteger

AtomicInteger ทำให้การปรับค่าในหลายเธรดปลอดภัยโดยไม่ต้องใช้การล็อกแบบระบุได้ชัดเจน

import java.util.concurrent.atomic.*;public class Main {
  public static void main(String[] args) throws Exception {
    AtomicInteger count = new AtomicInteger(0);
    Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
    Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println("Count = " + count.get());
  }
}

คอลเลกชันที่รองรับการทำงานพร้อมกัน

คอลเลกชันที่รองรับการทำงานพร้อมกัน เช่น ConcurrentHashMap หรือ CopyOnWriteArrayList จัดการการเข้าถึงพร้อมกันได้อย่างปลอดภัย

โค้ด: ConcurrentHashMap

ConcurrentHashMap อนุญาตให้เขียนและอ่านพร้อมกันได้อย่างปลอดภัย

import java.util.concurrent.*;public class Main {
  public static void main(String[] args) throws Exception {
    ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
    Thread t1 = new Thread(() -> { map.put("A", 1); });
    Thread t2 = new Thread(() -> { map.put("B", 2); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println(map);
  }
}

โค้ด: CopyOnWriteArrayList

CopyOnWriteArrayList ช่วยหลีกเลี่ยง ConcurrentModificationException ระหว่างการวนซ้ำ

import java.util.concurrent.*;public class Main {
  public static void main(String[] args) {
    CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
    list.add("Hello");
    list.add("World");
    for(String s : list) {
      list.add("Extra"); // safe even during iteration
      System.out.println(s);
    }
  }
}

การตรวจสอบแบบอะตอมิก/พร้อมกัน

ตรวจสอบสั้น ๆ: เหตุใดจึงใช้ AtomicInteger แทน int ปกติเมื่อมีหลายเธรด

สรุปทบทวน

สรุปทบทวน: ใช้คลาสแบบอะตอมิกสำหรับตัวนับที่ปลอดภัยต่อเธรด และใช้คอลเลกชันที่รองรับการทำงานพร้อมกันสำหรับโครงสร้างข้อมูลที่ใช้ร่วมกันอย่างปลอดภัย

คำถามที่พบบ่อย

บทเรียน “ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน”

เรียนรู้การใช้ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกันเพื่อความปลอดภัยของเธรด คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การประสานงานและล็อก
  2. ตัวแปรอะตอมิกและคอลเลกชันแบบทำงานพร้อมกัน
  3. ข้อบกพร่องในการทำงานพร้อมกันที่พบบ่อย
← กลับไปที่ Java Academy