
正文
java事物锁定代码 java中lock锁
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java处理高并发时,使用synchronized代码锁防止同时对数据库某一数据的问题。
首先synchronized不可能做到对某条数据库的数据加锁。它能做到的只是对象锁。
比如数据表table_a中coloum_b的数据是临界数据java事物锁定代码,也就是java事物锁定代码你说的要保持一致的数据。你可以定义一个类java事物锁定代码,该类中定义两个方法read()和write()(注意java事物锁定代码,所有有关该临界资源的操作都定义在这个类中),再定义一个静态变量作为锁就可以java事物锁定代码了。
public static final String LOCK = "table_a_b_lock";
public int read(){
synchronized LOCK{
System.out.println("read data...");
}
}
public void write(String data){
synchronized LOCK{
System.out.println("write data:" + data);
}
}
另外,还可以在数据库级别加上锁。数据库本来就支持不同的隔离级别。
相关问答
Q1: JAVA怎么实现输入密码错误三次就会被锁定,需要管理员解锁的代码?
用While和一个计数变量,以下是伪代码
定义计数变量并归零
定义状态变量并归零
while(计数变量3且状态变量为真)
{
输入密码
if(密码正确)
{
状态变量设定为真
}
else
{
计数变量+1
密码框清空
}
}
if(状态变量不为真) /说明前面的循环结束是因为输错了三次
{
提示:请管理员解锁
【密码输入过程与上方用while循环类似】
}
else
{
(剩余操作)
}
Q2: java中怎样锁定当前窗口
又来回答了~这次说详细点
-----------------------------
package gui.awt;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ChildFrame {
JFrame jf = new JFrame("主窗口");
JButton jb = new JButton("ChildFrame");
JLabel jl = new JLabel("锁定的子窗口");
JDialog jd;
public ChildFrame() {
this.jf.setSize(200, 100);
this.jf.setLocation(200, 200);
/**
* 这里新new一个对话框 模式设定为TRUE 除非此子窗口关闭
* 否则焦点一只都在此窗口上
*/
this.jd = new JDialog(jf,true);
this.jd.setSize(150, 100);
this.jd.add(jl);
/**这里就是你要的弹出一个锁定的窗口*/
this.jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("---------");
jd.setLocation(150, 150);
jd.setVisible(true);
}}
);
/**
* 点击右上角的关闭 时执行的方法 退出
*/
this.jf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
jf.add(jb);
jf.setVisible(true);
}
/**
* 主方法测试用
* @param args
*/
public static void main(String[] args) {
ChildFrame cf = new ChildFrame();
}
}
--------------------------
基本上这样就可以了
下面是API中对此的描述
JDialog
public JDialog(Frame owner,
boolean modal)
throws HeadlessException创建一个没有标题但有指定所有者 Frame 的有模式或无模式对话框。如果 owner 为 null,则将一个共享的、隐藏的窗体设置为该对话框的所有者。
此构造方法将该组件的语言环境属性设置为 JComponent.getDefaultLocale 所返回的值。
参数:
owner - 显示该对话框的 Frame
modal - 为 true 时是有模式对话框,false 时允许其他窗口同时处于激活状态
--------------------------
如果还需要帮助的话 可以给我留言~good luck
Q3: java中 请问我应该如何如何锁这段代码才符合要求
public Object getObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
map.put(key,o)
}else {
return map.get(key);
}}// 格式没法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的实例来加锁,但是map是static的,无法锁住
// MyTest的多个实例在多个线程中的请求
//禾木双子 :如果A线程在getObject方法的第二行停止,此时B线程进入getObject后执行部分代码, 此时B线程停止,A线程启动,他不会执行'多线程处理', 仍然有线程线程安全问题,(想像一下更多的线程进入该方法的情况,num甚至会得到负值)
关于java事物锁定代码和java中lock锁的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







