如下两个线程类:
public class A implements Runnable{
private StringBuilder sb;
@Override
public void run() {
//操作sb缓冲
.......
}
public StringBuilder getsb() {
return sb;
}
public void setsb(StringBuilder sb) {
this.sb = sb;
}
}
public class B implements Runnable{
//此处得到A类的对象a
@Override
public void run() {
//操作a.getsb()缓冲
.......
}
}
如何能保证,A、B互斥?
A的线程在操作sb的时候加锁,让B不能操作;或者B的线程在操作sb的时候加锁,让A不能操作
始终只有一个线程可以操作sb!!
リーリー
synchronized
を試してください。いくつかの粒度があります。@scort のようにコード ブロックに追加することも、オブジェクトに追加することもできます。
synchronized または ReentrantLock。以前に誰かが synchronized の例を示しました。ここで ReentrantLock の例を示します。 リーリー
現時点では、StringBuffer を直接使用することを検討できます。StringBuilder との唯一の違いは、前者がスレッドセーフであることです。
個人的には、最初にスレッドの実行を必要とするメソッドを提案し、次にそのメソッドにロックを追加し、それから複数のスレッドを削除すれば可能になるはずだと思います