如何解决使用线程更有效地处理字符串
我有这个使用线程处理字符串的类,目前,它处理相同的数据是错误的
对于每个线程,我如何转换此类以更有效地处理字符串
这个类模拟我面临的问题:
class TransformA implements MyWork.StringWork {
@Override
public String mixStr(String str) {
return str+" Im mixStrA";
}
}
class TransformB implements MyWork.StringWork {
@Override
public String mixStr(String str) {
return str+" Im mixStrB";
}
}
public class MyWork {
private List<String> strResult = new ArrayList<String>();
public MyWork(List<String> startingData) {
this.strResult = startingData;
}
private void processstrings(StringWork f) {
List<String> newData = new ArrayList<String>();
for (String str : strResult) {
newData.add(f.mixStr(str));
}
strResult = newstrResult;
}
public List<String> process(List<StringWork> functions) throws
InterruptedException {
List<Thread> threads = new ArrayList<Thread>();
for (final StringWork f : functions) {
threads.add(new Thread(new Runnable() {
@Override
public void run() {
processstrings(f);
}
}));
}
for (Thread t : threads) {
t.start();
}
for (Thread t : threads) {
t.join();
}
return strResult;
}
public interface StringWork {
public String mixStr(String str);
}
public static void main(String[] args) {
List<MyWork.StringWork> functions = new ArrayList<>();
functions.add(new TransformA());
functions.add(new TransformB());
List<String> startingData = new ArrayList<String>();
startingData.add("XXXX");
startingData.add("YYYY");
startingData.add("AAAA");
startingData.add("BBBB");
startingData.add("CCCC");
startingData.add("ddddD");
MyWork myWork = new MyWork(startingData);
try {
List<String> result = MyWork.process(functions);
//System.out.println(String.join("\n",result));
} catch (InterruptedException e) {
e.printstacktrace();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。