我必须为并行计算课程做一个练习。
该任务使用 N 个并行进程从字符串中删除字母"RTY"的所有组合。
通常我会这样做String strAfter=str1.replaceAll("[RTY]","") ;
但是如何并行呢?
拆分、工作、合并。
- 在主线程中拆分,将输出存储在
Set
中 - 创建 N 个工作线程。
- 让每个工作线程在给定
index
syncrhonized pick()
集合中的一个字符串,增加索引并处理条目 - 当
index
达到Set
尺寸时,将所有东西重新粘合在一起。您可能希望使用StringBuilder
和append()
而不是连接字符串
将字符串分成 N 个部分,然后让每个进程在字符串的一个块上工作。拆分机制应该足够智能,可以处理边界值。您需要使用 Send() 和 Recv() 方法将一个字符串块传达给相应的进程进行处理,最终更新的字符串应该以相同的方式传达。在这里你可以找到Javadocs http://mpj-express.org/docs/javadocs/index.html
我的猜测是你需要找到一种方法来做到这一点,而无需对整个字符串使用单线程函数。将字符串分成 N 个部分,让 N 个并行进程中的每一个在该部分运行替换函数,并在所有线程完成后连接字符串怎么样?