public NumberWords(int activeThread) {
this.activeThread = activeThread;
}
public synchronized void incTotalWordCount(int n) {
totalWordCount += n;
System.out.println("The total word count is " + totalWordCount);
}
public synchronized void printCount() {
System.out.println("The total word count(print count) is " + totalWordCount);
}
public synchronized void decActiveThread() {
getThreadName = Thread.currentThread().getName();
System.out.println(getThreadName);
if (Thread.getAllStackTraces().keySet().size() != 0) {
// Get number of active threads
activeThread = Thread.getAllStackTraces().keySet().size();
activeThread--;
if (activeThread == 0) {
System.out.println("The total number of word in the three files is " + totalWordCount);
System.out.println("The active threads is/are " + activeThread);
}
}
}
}
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
public class ReadFile1 extends Thread implements Runnable {
private NumberWords nw;
public ReadFile1(NumberWords nw) {
this.nw = nw;
}
//set file path
String path1 = System.getProperty("user.dir") + File.separator + "text1.txt";
BufferedReader br1 = null;
public void run() {
try {
br1 = new BufferedReader(new FileReader(path1));
String contentLine = br1.readLine();
while (contentLine != null) {
// Count number of words
String[] parts = contentLine.split(" ");
int count = 0;
for (int i = 0; i < parts.length; i++) {
count++;
}
// Check number of words counted.
System.out.println("The number of words in file(text1.txt) is " + count);
//Pass words count to sum
nw.incTotalWordCount(count);
contentLine = br1.readLine();
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (br1 != null) {
br1.close();
}
} catch (IOException ioe) {
System.out.println("Error in closing the BufferedReader");
}
}
}
}
主类:
public class TestReadFile {
public static void main(String args[]){
NumberWords nw = new NumberWords(args.length);
Thread rf1 = new Thread(new ReadFile1(nw));
Thread rf2 = new Thread(new ReadFile2(nw));
Thread rf3 = new Thread(new ReadFile3(nw));
rf1.start();
rf2.start();
rf3.start();
//Get total word cont
nw.decActiveThread();
}
}
这样怎么样:
public class NumberWords {
private int totalWordCount;
private int activeThreads;
public synchronized void incTotalWordCount(int n) {
totalWordCount += n;
activeThreads--;
System.out.println("The total word count is " + totalWordCount);
}
public synchronized void printCount() {
System.out.println("The total word count(print count) is " + totalWordCount);
}
public int getActiveThreads() {
return activeThreads;
}
public void setActiveThreads(int activeThreads) {
this.activeThreads = activeThreads;
}
}
ReadFile:
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class ReadFile implements Runnable {
private NumberWords nw;
private Path filePath;
public ReadFile(NumberWords nw, Path filePath) {
this.nw = nw;
this.filePath = filePath;
}
BufferedReader br1 = null;
public void run() {
try {
int count = 0;
for (String line : Files.readAllLines(filePath)) {
String[] parts = line.split(" ");
for (String w : parts) {
count++;
}
}
nw.incTotalWordCount(count);
} catch (IOException e) {
e.printStackTrace();
}
}
}
主要:
import java.io.File;
import java.nio.file.Paths;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String args[]) throws InterruptedException {
NumberWords nw = new NumberWords();
ExecutorService execSvc = Executors.newCachedThreadPool();
new Thread(new ReadFile(nw, Paths.get(System.getProperty("user.dir") + File.separator + "text1.txt"))).start();
new Thread(new ReadFile(nw, Paths.get(System.getProperty("user.dir") + File.separator + "text2.txt"))).start();
new Thread(new ReadFile(nw, Paths.get(System.getProperty("user.dir") + File.separator + "text3.txt"))).start();
nw.setActiveThreads(3);
while (nw.getActiveThreads() > 0) {
Thread.sleep(100);
System.out.println("Waiting for Tasks to complete!");
}
nw.printCount();
}
}
下面有一个程序,我正在调用getTotalPasserian(pm)方法,但在获取用户输入的值时遇到了问题。 pm=0、cm=0、pi=0、ci=0、ps=0、cs=0,或者当我试着做pm=gettotalposysers(pm=0)时,它可以工作,但没有向用户显示主菜单printmenu.menu();从上面除了system.out.println(“输入来自马耳他的乘客总数:”);首先从方法中
在业务规则任务之后,我放置了一个简单的脚本任务: 我现在得到的输出是(注意:MyCustomObject不重写toString): 内存中对象的值:MyCustomObject@XYZ 欢迎提出任何建议。
问题内容: 在Jenkins中,我希望获得用户输入并将其传递给Shell脚本以供进一步使用。 我尝试将其设置为环境变量,但是shell脚本无法获取最新值,而旧值是echo。 问题答案: 您需要在阶段之间传递变量作为环境变量,例如:
我正在解决Cplex中的医院员工日程安排问题,我是Cplex的新手。 但Cplex无法配置决策变量的答案。 我想可能是我的模型设计问题。 这是一个很长的模型。 如果我能得到帮助,我将不胜感激。 模型 --设置: {string}E=...;//经验等级集(高级,新秀) {字符串}I=…;//全套医生 {string}为=//具有S级经验的一组医生 {字符串}Ir=//具有R级经验的一组医生 {字符
问题内容: 我有主GUI线程,其中有一个JprogressBar,并且正在实现ProprtyChangeListener。 当按下按钮时,扩展SwingWorker的其他类将开始执行并执行一系列可能很长的计算。我需要A类中的进度条以根据B类中的变量来呈现进度。 我的代码在下面(我所有失败的尝试都可能有点混乱…) 将不胜感激。 GUI类别: 计算类: 编辑 原始问题仍然存在。出于某种原因,进度条仍然
我在更改联系人对象中的变量值时遇到问题。我正在尝试制作一个联系人列表,但我无法更改变量trach方法的值。我有editTouch方法调用change eName方法,这两个方法都传递了ArrayList对象trach引用,所以它不应该在main方法中更改值trach ArrayList时出现问题,但问题是当我想更改对象的名称时它不会更改它。我这里缺少什么吗?