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

  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • Truc Minh

    Truc Minh

    23 Ocak 2011
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009