我的计划如下:
import java.io.*;
class MyThread implements Runnable{
int st,en;
LineNumberReader lmr1;
BufferedWriter bw;
MyThread(int s,int e){
st=s;
en=e;
}
public void run(){
try{
bw=new BufferedWriter(new FileWriter("EmpWritten.txt"));
lmr1=new LineNumberReader(new FileReader("out3.txt"));
String s=Thread.currentThread().getName();
lmr1.skip(st);
while(st++<en){
bw.write(s+"\t"+lmr1.readLine());
bw.newLine();
}
lmr1.close();
bw.close();
}
catch(Exception e){}
}
public static void main(String args[])throws Exception{
LineNumberReader lmr=new LineNumberReader(new FileReader("out3.txt"));
lmr.skip(Long.MAX_VALUE);
int num=lmr.getLineNumber();
int num1=num/3,num2=2*num1;
MyThread mt1=new MyThread(0,num1);
MyThread mt2=new MyThread(num1+1,num2);
MyThread mt3=new MyThread(num2+1,num);
Thread t1=new Thread(mt1);
Thread t2=new Thread(mt2);
Thread t3=new Thread(mt3);
t1.start();
t2.start();
t3.start();
lmr.close();
}
}
输入:
提交ID名称薪资部门号码提交 ID1名称1 25100部门1承诺ID2名称2 25200部门2承诺 ID3名称3 25300部门3承诺ID4名称4 25400部门4承诺 ID5 Name5 25500 Dept5
Commit ID6 Name6 25600 Dept6
Commit ID7名称7 25700部门7承诺ID8名称8 25800部门8承诺 ID9 Name9 25900 Dept9
承诺ID10名称10 26000 Dept10
输出:
Thread-2 ID Name Salary Department Number
Thread-2 Commit ID1 Name1 25100 Dept1
Thread-2 Commit ID2 Name2 25200 Dept2
Thread-2 Commit ID3 Name3 25300 Dept3
为什么不执行其他线程?需要做哪些修改才能获得所需的输出?该程序的高效实现也是受欢迎的。
答案 0 :(得分:0)
三个线程工作。 在run方法中添加一些日志后,您可以看到它。 我不确定你到底想要什么。 但我认为你需要生产者 - 消费者设计模式。