1 用数据库,在数据库建一张表,需要锁的节点都可以尝试用 select from Lock where id=xx for update 这个时候只有一个节点能拿到结果,其它的都会等待,就能实现一个简单的悲观锁。
2 用 Zookeeper 来做分布式锁,具体可以搜一下。
3 自己实现,搞个节点来做这个事情,所有要获取锁的都走 RPC 调用来请求锁,用完以后记得释放,不然其他的节点就会挂那里。
oracle吗查看这个Java登录的session的用户,用这个用户登录sqlplus再执行上面的语句看,javautilNoSuchElementException应该是权限问题,没法访问这些表,相当于当前用户的schema下没有这些表
首先synchronized不可能做到对某条数据库的数据加锁。它能做到的只是对象锁。
比如数据表table_a中coloum_b的数据是临界数据,也就是你说的要保持一致的数据。你可以定义一个类,该类中定义两个方法read()和write()(注意,所有有关该临界资源的 *** 作都定义在这个类中),再定义一个静态变量作为锁就可以了。
public static final String LOCK = "table_a_b_lock";
public int read(){
synchronized LOCK{
Systemoutprintln("read data");
}
}
public void write(String data){
synchronized LOCK{
Systemoutprintln("write data:" + data);
}
}
另外,还可以在数据库级别加上锁。数据库本来就支持不同的隔离级别。
以上就是关于Java 集群锁如何实现全部的内容,包括:Java 集群锁如何实现、java中怎么查看数据库是否锁表、java处理高并发时,使用synchronized代码锁防止同时对数据库某一数据的问题。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)