我的Java程序有一个包含两个方法的类,这些方法将由线程调用。如何启动两个线程,一个调用一个方法,另一个调用另一个方法?我应该使用两个内部类,每个类实现Runnable接口还是别的什么?
public class Example {
public void read(String key) { /* some code */ }
public void write(String key, InputStream inputStream) { /* some code */}
}
答案 0 :(得分:0)
您可以将两种方法标记为已同步。 https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html http://tutorials.jenkov.com/java-concurrency/synchronized.html
答案 1 :(得分:0)
取决于方法中的代码。但是如果它们实际上只是对某些资源进行写入和读取,则可以并行执行读取而不会导致问题(因为您只是在阅读)。但对于写作而言则不同。一次只允许一个线程写入相同的资源,同时没有其他线程可以读取或写入(互斥)。您可以查看有关读/写锁的this tutorial,这很好地代表了共享锁读取和处理写操作以保持一致性的想法。
重写问题后编辑:启动2个主题,每个主题调用一个方法:
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
write(..);
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
read(..);
}
});
t1.start();
t2.start();