Middle — Middle+
145
Деректерді ағыстарды пайдалана отырып, қалай жүзеге асыруға болады?
Сұралған компаниялар
Драйв Клик
AI-дан жауап
sobes.tech AI
Java-да деректерді ағымдар арасында беру бірнеше тәсілмен жүзеге асырылады:
-
Жалпы объектілермен синхрондау — ағымдар ортақ объектімен жұмыс істейді, оған
synchronized,wait()жәнеnotify()көмегімен қол жеткізіледі. -
java.util.concurrentпакетінің қауіпсіз коллекцияларын пайдалану, мысалы,BlockingQueue. -
java.util.concurrent-тен кластарды пайдалану, мысалы,Exchanger,SynchronousQueueжәне басқа.
BlockingQueue пайдалану арқылы ағымдар арасында деректерді беру мысалы:
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class ProducerConsumerExample {
public static void main(String[] args) {
BlockingQueue<String> queue = new LinkedBlockingQueue<>();
Thread producer = new Thread(() -> {
try {
queue.put("Деректер");
System.out.println("Өндіруші деректерді қойды");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
Thread consumer = new Thread(() -> {
try {
String data = queue.take();
System.out.println("Тұтынушы алды: " + data);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
producer.start();
consumer.start();
}
}
Бұл мысалда бір ағым деректерді кезекке салады, ал басқа ағым оны алады, және BlockingQueue ағымдар қауіпсіздігін қамтамасыз етеді және кезек бос немесе толы болғанда ағымды блоктайды.