neslihan
neslihan
Ankara
23/08/2016 tarihinden beri üye
310 GY Puanı
24K GY Sırası

Kişisel Sayfaları

İlgi Alanları

2 Rozet
2 Sertifika
1 Soru Sordu
0 Cevap Verdi
0 Blog Yazısı
7 Etiket Takibi

Hakkında

İş Tecrubesi

Veri Yönetimi Uzmanı
Bilgi Teknolojileri ve İletişim Kurumu | Kasım 2018

Eğitim Geçmişi

Sakarya Üniversitesi
Bilgisayar Mühendisi | Eylül 2013 - Ocak 2018

Sertifikalar & Başarılar

GY Sertifikaları (2)
Veri Bilimi ve Yapay Zekaya Giriş 101 Sertifikası
Veriliş Tarihi: Mart 2022
Android 101 Sertifikası
Veriliş Tarihi: Mayıs 2017
Diğer Sertifikaları (0)
Kullanıcıya ait sertifika bulunmamaktadır.
Test Sonuçları (0)

Kullanıcıya ait test sonucu bulunmamaktadır.

Dil Becerileri

Son Forum Aktiviteleri

1
Tümünü Gör

multithread

Merhaba, ben therad kullanarak büyük sayıların faktöriyelini hesaplamaya çalışıyorum.Fakat seri hesaplamada paralel hesaplamaya göre sonuç daha hızlı oluyor.Nasıl çözebilirim .Teşekkürler

 

 

public class Faktoriyel implements Runnable{

private Sayi sayi;
public Sayi faktoriyelSonuc;
public Faktoriyel(Sayi sayi){
    this.sayi = sayi;
}

@Override
public void run() {
BigInteger fact = new BigInteger("1");
for (int i = 1 ;i <= sayi.GetSayi().longValue() ; i++) {
    fact = fact.multiply(new BigInteger(i + ""));
    }     
faktoriyelSonuc = new Sayi(fact.toString());
System.out.println(faktoriyelSonuc.GetSayi());
}
}

 

------------------------------------------------

public class Project1{

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    long baslangicSeri = System.nanoTime();
    System.out.println(SeriFaktoriyel(new Sayi("200000")));
    long bitisSeri = System.nanoTime();
    double SerigecenSure = (double)(bitisSeri-baslangicSeri)/1000000000;
    System.out.println("Seri Hesaplama : "+SerigecenSure+" saniye");

    long baslangicParalel = System.nanoTime();
    ExecutorService havuz = Executors.newFixedThreadPool(10);
    havuz.execute(new Faktoriyel(new Sayi("200000")));
    havuz.shutdown();
    while(!havuz.isTerminated()){ }
    long bitisParalel = System.nanoTime();
    double gecenSure = (double)(bitisParalel-baslangicParalel)/1000000000;
    System.out.println("Paralel hesaplama : "+gecenSure+" saniye");     

public static String SeriFaktoriyel(Sayi sayi){
     BigInteger fact = new BigInteger("1");
for (int i = 1; i <= sayi.GetSayi().longValue() ; i++) {
    fact = fact.multiply(new BigInteger(i + ""));
    }
   return fact.toString();
}
}

6 yıl 11 ay önce yanıtladın