如下两个线程类:
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!!
Essayez
synchronized
, il se décline en plusieurs granularités.Il peut être ajouté au bloc de code comme @scort, ou il peut être ajouté à l'objet.
synchronisé ou ReentrantLock. Quelqu'un a déjà donné un exemple de synchronisé, je vais donner un exemple de ReentrantLock ici :
Pour le moment, vous pouvez envisager d'utiliser StringBuffer directement. La seule différence avec StringBuilder est que le premier est thread-safe.
Personnellement, je pense que vous devriez d'abord proposer la méthode qui nécessite l'exécution d'un thread, puis ajouter un verrou à la méthode, puis supprimer plusieurs threads et cela devrait être possible