2017-02-12 2 views
0

Я новичок в Java. Пожалуйста, помогите мне решить мою проблему. Я хочу выполнить хешированный поиск шаблонов, присутствующих в файлах. Шаблоны предоставляются во время выполнения. Поиск выполняется в нескольких файлах, и каждый файл составляет почти 1 МБ. Если я выполняю функцию поиска поочередно по всем файлам, это занимает много времени. Я хотел выполнить операцию поиска параллельно во всех таких 12 файлах. Просьба указать, как сократить время выполнения.Параллельное выполнение одних и тех же операций над несколькими файлами в java

+0

Возможно, у вашей машины есть место на 1000 МБ, если не 10 000 МБ. Дома у меня есть более 100 000 МБ памяти. 1 МБ достаточно мал, что вам не нужно беспокоиться о размере. –

+0

@PeterLawrey У вас есть машина с 100 ГБ оперативной памяти? – weston

+1

@weston Мой 9 лет имеет старый компьютер, который имеет двойной экран и имеет 24 ГБ памяти. Я думаю, что пришло время обновить до 256 ГБ. Я сделал этот тест дома;) https://vanilla-java.github.io/2017/01/27/Chronicle-Queue-storing-1-TB-in-virtual-memory-on-a-128-GB- machine.html Вам может быть интересно узнать, какая JVM, которая превышает 1 ТБ виртуальной памяти, похожа на 'top';) –

ответ

0

Вы можете использовать Threads. Они параллельны друг другу.

  • Вот пример:

    Thread thread = new Thread() { 
         public void run(){ 
          //Here you put your code 
         } 
    }; 
    thread.start(); 
    
  • ИЛИ, если вы используете Java 8:

    Thread thread = new Thread(() -> { 
         //Here you put your code 
    }); 
    thread.start(); 
    
  • ИЛИ сделать Threadподкласс и переопределитьrun() метод:

    public class MyThread extends Thread { 
        public void run() { 
         //Here you put your code 
        } 
    } 
    
    //Then, in another class: 
    
    MyThread mt = new MyThread(); 
    mt.start(); 
    
  • ИЛИ сделать класс реализующийRunnable и переопределенияrun() метод:

    public class MyRunnable implements Runnable { 
        public void run() { 
         //Here you put your code 
        } 
    } 
    
    //Then, in another class: 
    
    Thread th = new Thread(new MyRunnable()); 
    th.start(); 
    

Также вы можете следить за official documentation on Threads.

+0

благодарит за помощь ур – Ivy