Yazmaya çalıştığım java ile Download Manager projesinde ThreadPool yapısı kullandım ve doğru çalışıyor mu diye URL değişkenleri tanımlayıp bunları bir for döngüsünde ThreadPool'a ekledim ve threadpool sizeın izin verdiği kadarıyla download işlemlerini gerçekleştirdi.Şimdi ise kullanıcıdan url girmesini ve bunu girdikten sonra da yeni bir url eklediğinde bunu download threadlerinin olduğu poola eklemek istiyorum.Main classında denediğim kod:

    public static void main(String[] args) throws MalformedURLException {
     System.out.println("Welcome to Download Manager.");
    int i=0;
        boolean newDownload=true;
    URL[] url =new URL[100] ;
    String s1,s2,s3;
    DownloadManagerSystem dms=new DownloadManagerSystem();
    while(newDownload){
        System.out.println("Enter a URL.");
        Scanner scan= new Scanner(System.in);
        s1=scan.nextLine();
        System.out.println(s1);
        url[i]= new URL(s1);
        dms.addNewDownload(url[i]);
        i++;
    System.out.println("Do you want to add new URL:YES or NO");
    Scanner scan2= new Scanner(System.in);
    s2=scan2.nextLine();
      if(s2=="YES")
              {
          newDownload=true;
      }
      else
      {
          newDownload=false;
          }
    }

DownloadManager.java:

        private int threadPoolSize=10;//Limiting the number of working threads;
    private Download[] downloads;
    private ExecutorService tpes;
    private int id=0;

    public void  createThreadPool() throws MalformedURLException{
        tpes= Executors.newFixedThreadPool(threadPoolSize);
    }
    public void addNewDownloadToPool(URL url){
            downloads[id] = new Download(url,id);
            System.out.println("Download"+id+" is added to downloads list");
            tpes.execute(downloads[id]);
            id++;
            tpes.shutdown();
    }
    public DownloadManager() throws MalformedURLException {
            this.downloads = new Download[noOfDownloads];
            createThreadPool();
   }

Buradaki problem consolda bir kez url i girdikten sonra indirmeye işlemine başlıyor fakat yeni bir tane indirmek ister misiniz diye sormuyor.Bunun sebebi ne olabilir?Bir thread işini yaparken niçin başka bir URL alamıyorum?Şimdiden teşekkürler.

soruldu: 19 Nis '13, 10:02

ipek's gravatar image

ipek
226172025
cevap kabul oranı: 100%

değiştirildi: 19 Nis '13, 10:10

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Öncelikle kullanıcıdan aldığınız String değeri == ile değil .equals ile kontrol etmelisiniz.

if ("yes".equalsIgnoreCase(s2)) {
    newDownload = true;
} else {
    newDownload = false;
}

addNewDownloadToPool metodu içerisinde tpes.shutdown(); demek yanlış, bunun yerine DownloadManager içerisinde

public void shutDownExecutor() {
    tpes.shutdown();
}

şeklinde bir metod tanımlayarak bunu main metodda while bittikten sonra dms.shutDownExecutor(); şeklinde çağırmak gerek..

permanent link

cevaplandı: 26 Nis '13, 09:07

BoraDemir's gravatar image

BoraDemir
11612
cevap kabul oranı: 20%

@BoraDemir teşekkürler.

(26 Nis '13, 10:40) ipek ipek's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×31

Soruldu: 19 Nis '13, 10:02

Görüntüleme: 801 kez

Son güncelleme: 26 Nis '13, 10:40

powered by BitNami OSQA