如下两个线程类:
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!!
PHP中文网2017-04-18 09:52:26
synchronized
을 시도해 보세요. 여러 세부 단위로 제공됩니다.
@scort처럼 코드 블록에 추가할 수도 있고, 객체에 추가할 수도 있습니다.
PHPz2017-04-18 09:52:26
synchronized 또는 ReentrantLock. 이전에 누군가가 동기화의 예를 들었습니다. 여기에서 ReentrantLock의 예를 들겠습니다.
으아악PHP中文网2017-04-18 09:52:26
이때 StringBuffer를 직접 사용하는 것을 고려할 수 있습니다. StringBuilder와의 유일한 차이점은 전자가 스레드로부터 안전하다는 것입니다.
大家讲道理2017-04-18 09:52:26
개인적으로는 스레드 실행이 필요한 메서드를 먼저 제시하고 그 메서드에 잠금을 추가한 다음 여러 스레드를 제거해야 한다고 생각합니다