Skip to Main Content

Java Programming

How to create multiple thread in a java program for analyzing comments?

User_40RXJSep 16 2022

Hi Team

I have a program that analyse comments per single line, how do i then multiple thread to it to allow more or seperate thread? Currently programming running sequentially only.

//Current code

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CommentAnalyzer {

private File file;

public CommentAnalyzer(File file) {
this.file = file;
}

public Map<String, Integer> analyze() {

Map<String, Integer> resultsMap = new HashMap<>();

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {

String line = null;
while ((line = reader.readLine()) != null) {

if (line.length() < 15) {

incOccurrence(resultsMap, "SHORTER_THAN_15");

} else if (line.contains("Mover")) {

incOccurrence(resultsMap, "MOVER_MENTIONS");

} else if (line.contains("Shaker")) {

incOccurrence(resultsMap, "SHAKER_MENTIONS");

}
}

} catch (FileNotFoundException e) {
System.out.println("File not found: " + file.getAbsolutePath());
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO Error processing file: " + file.getAbsolutePath());
e.printStackTrace();
}

return resultsMap;

}

/**
* This method increments a counter by 1 for a match type on the countMap. Uninitialized keys will be set to 1
* @param countMap the map that keeps track of counts
* @param key the key for the value to increment
*/
private void incOccurrence(Map<String, Integer> countMap, String key) {

countMap.putIfAbsent(key, 0);
countMap.put(key, countMap.get(key) + 1);
}

}

Comments
Post Details
Added on Sep 16 2022
1 comment
91 views