如下两个线程类:
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唯一的不同就是前者是線程安全的。
我個人覺得你應該把需要執行緒執行的方法先提出來,然後在該方法上加上鎖,然後讓多個執行緒去掉用應該可以實作