ما الفرق بين طريقتي wait() و sleep() في Java؟ أمثلة مع كود
مرحبًا بالجميع! بدأت في تعلم تعدد الخيوط في Java وارتبكت بين طريقتي wait() و sleep(). يبدو أن كلاهما يوقفان تنفيذ الخيط، لكنهما يتصرفان بشكل مختلف. ساعدوني في الفهم.
لدي مثال بسيط. أقوم بإنشاء خيطين: واحد ينتج البيانات والآخر يستهلكها. أستخدم sleep() للمزامنة:
```java
class Producer extends Thread {
private List buffer = new ArrayList<>();
public void run() {
for (int i = 0; i < 10; i++) {
buffer.add(i);
System.out.println("تم إنتاج: " + i);
try {
Thread.sleep(100); // ننتظر حتى يأخذ المستهلك
} catch (InterruptedException e) {}
}
}
public int getValue() {
return buffer.remove(0);
}
}
class Consumer extends Thread {
private Producer producer;
Consumer(Producer p) { producer = p; }
public void run() {
for (int i = 0; i < 10; i++) {