S**Y 发帖数: 136 | 1 我有个database,
一个线程 有两句话 :
prog1
{
A; //访问数据科1
B; //访问数据库2
}
另外一个定期cron的线程也要访问一个数据科1,
我想让第一个线程里面A语句和B语句是atomic的,必须一起执行完了,第二个线程
才可以执行
感觉应该非常简单的,大概就几句,但是对java不熟。谁能说说是用什么?
包子谢 |
c*****e 发帖数: 3226 | 2 latch
【在 S**Y 的大作中提到】 : 我有个database, : 一个线程 有两句话 : : prog1 : { : A; //访问数据科1 : B; //访问数据库2 : } : 另外一个定期cron的线程也要访问一个数据科1, : 我想让第一个线程里面A语句和B语句是atomic的,必须一起执行完了,第二个线程 : 才可以执行
|
y*********e 发帖数: 518 | 3 class Database {
final Object syncRoot = new Object();
public void prog1() {
X;
synchronized (syncRoot) {
A;
B;
}
Y;
}
public void prog2() {
D;
synchronized (syncRoot) {
A;
}
C; // whatever
}
}
【在 S**Y 的大作中提到】 : 我有个database, : 一个线程 有两句话 : : prog1 : { : A; //访问数据科1 : B; //访问数据库2 : } : 另外一个定期cron的线程也要访问一个数据科1, : 我想让第一个线程里面A语句和B语句是atomic的,必须一起执行完了,第二个线程 : 才可以执行
|
g*****g 发帖数: 34805 | 4 atomic is easy, you probably want to roll back A if B fails,
that's the key.
【在 S**Y 的大作中提到】 : 我有个database, : 一个线程 有两句话 : : prog1 : { : A; //访问数据科1 : B; //访问数据库2 : } : 另外一个定期cron的线程也要访问一个数据科1, : 我想让第一个线程里面A语句和B语句是atomic的,必须一起执行完了,第二个线程 : 才可以执行
|