Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中对多个文件并行执行相同的操作_Java_Multithreading_File - Fatal编程技术网

在java中对多个文件并行执行相同的操作

在java中对多个文件并行执行相同的操作,java,multithreading,file,Java,Multithreading,File,我是Java初学者,请帮我解决问题。 我想对文件中存在的模式执行基于哈希的搜索。这些模式在运行时提供。 搜索要在多个文件上执行,每个文件几乎有1MB。如果我在所有文件上连续执行搜索功能,它会花费很多时间。我想对所有这12个文件并行执行搜索操作。 请指导我如何缩短执行时间。您可以使用线程。它们彼此平行 这里有一个例子: Thread thread = new Thread() { public void run(){ //Here you put your cod

我是Java初学者,请帮我解决问题。 我想对文件中存在的模式执行基于哈希的搜索。这些模式在运行时提供。 搜索要在多个文件上执行,每个文件几乎有1MB。如果我在所有文件上连续执行搜索功能,它会花费很多时间。我想对所有这12个文件并行执行搜索操作。
请指导我如何缩短执行时间。

您可以使用
线程。它们彼此平行

  • 这里有一个例子:

    Thread thread = new Thread() {
          public void run(){
              //Here you put your code
          }
    };
    thread.start();
    
    Thread thread = new Thread(() -> {
          //Here you put your code
    });
    thread.start();
    
    public class MyThread extends Thread {
        public void run() {
            //Here you put your code
        }
    }
    
    //Then, in another class:
    
    MyThread mt = new MyThread();
    mt.start();
    
    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();
    
  • 或者,如果您使用的是Java 8:

    Thread thread = new Thread() {
          public void run(){
              //Here you put your code
          }
    };
    thread.start();
    
    Thread thread = new Thread(() -> {
          //Here you put your code
    });
    thread.start();
    
    public class MyThread extends Thread {
        public void run() {
            //Here you put your code
        }
    }
    
    //Then, in another class:
    
    MyThread mt = new MyThread();
    mt.start();
    
    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();
    
  • 或创建一个
    线程
    子类并重写
    run()
    方法:

    Thread thread = new Thread() {
          public void run(){
              //Here you put your code
          }
    };
    thread.start();
    
    Thread thread = new Thread(() -> {
          //Here you put your code
    });
    thread.start();
    
    public class MyThread extends Thread {
        public void run() {
            //Here you put your code
        }
    }
    
    //Then, in another class:
    
    MyThread mt = new MyThread();
    mt.start();
    
    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();
    
  • 或使类实现
    Runnable
    并重写
    run()
    方法:

    Thread thread = new Thread() {
          public void run(){
              //Here you put your code
          }
    };
    thread.start();
    
    Thread thread = new Thread(() -> {
          //Here you put your code
    });
    thread.start();
    
    public class MyThread extends Thread {
        public void run() {
            //Here you put your code
        }
    }
    
    //Then, in another class:
    
    MyThread mt = new MyThread();
    mt.start();
    
    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();
    

您也可以这样做。

如果不是10000 MB,您的机器可能有1000 MB的空间。在家里,我有一个超过100000 MB的内存。1 MB足够小,您不必担心大小。@PeterLawrey您有一台100 GB内存的机器吗?@weston My 9 yo有一台我的旧电脑,它是双屏幕的,有24 GB内存。我想是时候升级到256 GB了。我在家做了这个测试;)您可能有兴趣在
top
;)上查看超过1 TB虚拟内存的JVM是什么样子的@彼得·劳瑞:哈哈,我的笔记本电脑和台式电脑的总容量(22GB)比你的9Yo少!但至少相同数量的屏幕!有趣的阅读,谢谢。非常感谢你的帮助