SORU
4 Ocak 2010, PAZARTESİ


'In ThreadPoolExecutor gönderme yapmak nasıl() eğer doymuş ise yöntem blok?

Yeni görevler eklemek için çalışırken ThreadPoolExecutor En büyük boyutuna ulaştı ve sıra dolu, sumbit() yöntemi bloklar gibi oluşturmak istiyorum. Bir özel uygulamaya gerek bunun için RejectedExecutionHandler veya yapmak için varolan bir yolu bu standart java kütüphanesini kullanan var mı?

CEVAP
4 Ocak 2010, PAZARTESİ


Olası bir çözüm sadece buldum:

public class BoundedExecutor {
    private final Executor exec;
    private final Semaphore semaphore;

    public BoundedExecutor(Executor exec, int bound) {
        this.exec = exec;
        this.semaphore = new Semaphore(bound);
    }

    public void submitTask(final Runnable command)
            throws InterruptedException, RejectedExecutionException {
        semaphore.acquire();
        try {
            exec.execute(new Runnable() {
                public void run() {
                    try {
                        command.run();
                    } finally {
                        semaphore.release();
                    }
                }
            });
        } catch (RejectedExecutionException e) {
            semaphore.release();
            throw e;
        }
    }
}

Başka çözümler var mı? Bu gibi durumlarda işlemek için standart bir yol gibi görünüyor beri RejectedExecutionHandler dayalı bir şey tercih ederim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Arun Kumar

    Arun Kumar

    18 Mart 2010
  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013