title: Multithreading/Parallelizing each item of for loop JAVA
body: <p>I am trying to have each thread access a single item of for loop while another thread accesses the next item. I want to do this using multiple threads and number of multiple threads created will be input by the user. I have done this using executorservice and streams. I want to do this using simple threads. Is the below correct? Is there a better way? </p>
  
  <pre><code>Map&lt;String, String&gt; fileMap = new HashMap&lt;&gt;();
  fileMap.put("Age", "Age is not remotely associated with it.");
  fileMap.put("Gender", "Gender plays a role but not that important.");
  fileMap.put("Money", "People do not believe but this is the only factor that matters.");
  
  Runnable myRunnable = new Runnable(){
      public void run(){
          for (Map.Entry&lt;String, String&gt; entry : fileMap.entrySet()) {
              synchronized(this){
                  int counter = 0;
                  Pattern p = Pattern.compile("not");
                  Matcher m = p.matcher(entry.getValue());
                  while (m.find()) {
                      counter++;
                  }
                  System.out.println("File Name: " + entry.getKey());
                  System.out.println("Count: " + counter);
                  System.out.println(Thread.currentThread().getName());
              }
          }
      }    
  };
  
  int n = Integer.parseInt(args[0]);
  for (int x=0; x&lt;n; x++)
  {
      Thread temp= new Thread(myRunnable, "Thread #" + x);
      temp.start();
      System.out.println("Started Thread:" + x);
  }
  </code></pre>
  
  <p>Also, is it possible to have a thread not to go back to previous item since a previous thread has already computed the value? 
  Any help would be appreciated. Thanks</p>