Cri*_*ter 2 java multithreading
我遇到线程问题.我理解它们是如何工作的,但由于它们都使用相同的方法,我如何运行完全不同的东西,但同时运行不同的线程?
对我来说,似乎他们总是使用相同的标准方法,这使得他们做同样的事情.
所以,假设我有一个很大的.txt文件,我想通过每一行并对该行做一些事情.在这种情况下,我想让每个线程执行.txt文件的十分之一,但我不明白线程如何相互通信,以及它们如何组织,以便每个线程做正确的部分?
任何人都可以解释或帮助我吗?非常感谢!
您可以扩展java.lang.Thread(或更好地 - 实现java.lang.Runnable)并将参数传递给新对象的构造函数.对于文本文件示例:
public FileReader implements Runnable {
private int startLine;
private int endLine;
public FileReader(int startLine, int endLine) {
// assign the params to the fields
}
public void run() {
// use the params to read the appropriate lines
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以:
new Thread(new FileReader(1, 10)).start();
new Thread(new FileReader(11, 20)).start();
new Thread(new FileReader(21, 30)).start();
Run Code Online (Sandbox Code Playgroud)
现在你可能应该看看java.util.Concurrent而不是修改原始线程(尽管它们当然可以在适当的地方使用).线程是一个相当大的主题,但通过使用Concurrent包中明确定义的习语,它可以变得更加可忍受.