Middle+
Android tətbiqlərinin inkişafında semaforlarla işləmə təcrübəniz varmı?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, təcrübəm var. Semaforlar çox ipli mühitdə məhdud resurslara girişin idarə olunması üçün istifadə olunur. Android inkişafında bu, ümumi verilərə paralel girişin idarə olunması üçün faydalıdır, məsələn, müxtəlif ipdən verilənlər bazası və ya şəbəkə sorğuları ilə işləyərkən.
java.util.concurrent paketindən Semaphore sinifindən istifadə edirəm.
Əsas metodlar:
acquire(): İzni əldə edir. Əgər mövcud deyilsə, ip bloklanır.release(): İzni azad edir və mövcud olanların sayını artırır.
Resursa paralel girişin məhdudlaşdırılması üçün nümunə:
import java.util.concurrent.Semaphore;
// 2 icazə ilə semaphore elan edirik
private final Semaphore resourceSemaphore = new Semaphore(2);
public void accessResource(int threadId) {
try {
// İzni əldə edir, limitə çatanda bloklanır
resourceSemaphore.acquire();
System.out.println("İp " + threadId + " resursa giriş aldı.");
// Resursla işləmənin simulyasiyası
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// İzni azad edir
resourceSemaphore.release();
System.out.println("İp " + threadId + " resursu azad etdi.");
}
}
Semaforlar resurs hovuzlarını səmərəli idarə etməyə və yarış vəziyyətlərinin qarşısını almağa imkan verir. İzinlərin sayını diqqətlə planlaşdırmaq və düzgün idarə etmək, qarşılıqlı bloklamaları önləmək üçün vacibdir.