如下两个线程类:
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!!
Cuba
synchronized
, ia datang dalam beberapa butiran.Ia boleh ditambahkan pada blok kod seperti @scort, atau ia boleh ditambahkan pada objek.
synchronized atau ReentrantLock Seseorang memberi contoh synchronized sebelum ini saya akan berikan contoh ReentrantLock di sini:
Pada masa ini, anda boleh mempertimbangkan untuk menggunakan StringBuffer secara langsung Satu-satunya perbezaan daripada StringBuilder ialah yang pertama adalah selamat untuk benang.
Saya secara peribadi berpendapat anda harus mengemukakan kaedah yang memerlukan pelaksanaan utas dahulu, kemudian tambahkan kunci pada kaedah itu, dan kemudian alih keluar berbilang utas dan ia sepatutnya boleh dilakukan