2017-02-22 3 views
-4

Я реализую алгоритм рекомендаций в программе Java.Как сделать параллельное программирование с входными значениями в java

Однако у меня серьезные проблемы. Набор данных слишком велик, и вычисление происходит слишком медленно. Итак, мне нужно выполнить параллельное программирование на Java.

Например,

for (int i=0; i < 10000000 ; i++) { ~~~ } 

Я хочу, чтобы разделить эти предложения, такие как

process 1: for (int i=0; i < 10000 ; i++) 

process 2: for (int i=10001; i < 20000 ; i++) 

process 3: for (int i=20001; i < 30000 ; i++) 

...

Я знаю, что подобные методы in Python. Как сделать параллельное программирование на Java?

+3

Вы имеете в виду темы? И не параллельное программирование, когда люди кодируют параллель? Точно так же, как парное программирование .. но параллельно! Просто используйте Java Threads –

+0

Вы можете рассмотреть возможность использования параллельных потоков Java 8 .... –

ответ

0

Надеюсь, это вам поможет.

public class MyRunnable implements Runnable { 
     private final long countUntil; 

     MyRunnable(long countUntil) { 
       this.countUntil = countUntil; 
     } 

     @Override 
     public void run() { 
       long sum = 0; 
       for (long i = 1; i < countUntil; i++) { 
         sum += i; 
       } 
       System.out.println(sum); 
     } 
} 



public class Main { 

     public static void main(String[] args) { 
       // We will store the threads so that we can check if they are done 
       List<Thread> threads = new ArrayList<Thread>(); 
       // We will create 500 threads 
       for (int i = 0; i < 500; i++) { 
         Runnable task = new MyRunnable(10000000L + i); 
         Thread worker = new Thread(task); 
         // We can set the name of the thread 
         worker.setName(String.valueOf(i)); 
         // Start the thread, never call method run() direct 
         worker.start(); 
         // Remember the thread for later usage 
         threads.add(worker); 
       } 
       int running = 0; 
       do { 
         running = 0; 
         for (Thread thread : threads) { 
           if (thread.isAlive()) { 
             running++; 
           } 
         } 
         System.out.println("We have " + running + " running threads. "); 
       } while (running > 0); 

     } 
} 

я получил его от here

Смежные вопросы