如何理解方法同步? 1 同一时间只能有一个线程访问它,那如果我是分别来自两个不同的实例对象可不可以同时访问??2 如何将同步应用到数据库的回滚和数据的完整性上?3 能说说主程序\主线程\用户线程和DAEMON线程的关系? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 同一时间只能有一个线程访问它,那如果我是分别来自两个不同的实例对象可不可以同时访问? 不可以,如果两个不同的实例对象同时访问一个数据库中的同一个对象,如表的时候,就可能会 出现一个对象正在读数据的同时另一个对象在写数据.所以对于多线程的程序,一定要注意同 步.特别是对于关键敏感的数据的访问.但同步的代价就是程序的执行效率降低,如果不是敏感 的数据可以不用同步 2 如何将同步应用到数据库的回滚和数据的完整性上? 措施1:用synchroized,这个关键字用于同步,可以把它加在方法的头部,也可以把它加在方法 的语句块中。 措施2:在操作数据库的过程中,把对敏感数据的操作放在try-catch-finall语句块中 措施3:在对数据库进行实际操作之前,调用这个方法:setAutoCommit(false);这个方法的作 用是关闭数据库的自动提交功能,而必须等待显式的执行commit操作 措施4:在所有必需的数据库操作后执行commit方法,将前面所有的操作作为一个整体的事务 一次性提交 措施5:在catch中添加如下语句: statement.rollback(); statement.setAutoCommit(true); 第一个语句的作用是如果在前面数据库的操作中如果发生异常,则回滚所有的操作 第二个语句的作用是设置数据库的自动提交属性为真,这样后面fianlly中关闭数据库 连接,结果集的操作才会自动提交3 能说说主程序\主线程\用户线程和DAEMON线程的关系? 程序和进程的区别:程序是静止的,进程是动态的。 进程和线程的区别:进程是资源分配的基本单位,线程是执行的基本单位,同一进程中的所有 线程共享该进程的所有资源,彼此之间可以互相通讯。就好像同一家人住 在同一个屋子里一样,屋子就是资源。而家里面有很多人,这些人共享这 间屋子一样,彼此之间还可以互相交流 主线程和用户现场的区别:每当一个main函数被执行,就会启动一个主线程,这个线程是由系 统启动的,用户线程是由用户启动的,比如你点击了一个按钮 不好意思,上面有点错误: statement.rollback(); statement.setAutoCommit(true);是connection.rollback(); connection.setAutoCommit(true); 类型已定义的问题,搞不定啊! 有谁能帮帮我把这个转成dowhile的形式么 根据字符串的值生成一个类 结束线程的问题。。 请问怎么退出一个方法 抽象类,接口的问题?? 高手指点,初学不明白的几个慨念! 新手提问:怎样开发Java的b/s模式的系统? 为什么我用ResultSet中的last(),absolute()就出错 编译java文件时会自动寻找classpash路径下文件吗 关于取得java程序的返回值问题。 多线程问题
不可以,如果两个不同的实例对象同时访问一个数据库中的同一个对象,如表的时候,就可能会
出现一个对象正在读数据的同时另一个对象在写数据.所以对于多线程的程序,一定要注意同
步.特别是对于关键敏感的数据的访问.但同步的代价就是程序的执行效率降低,如果不是敏感
的数据可以不用同步
2 如何将同步应用到数据库的回滚和数据的完整性上?
措施1:用synchroized,这个关键字用于同步,可以把它加在方法的头部,也可以把它加在方法
的语句块中。
措施2:在操作数据库的过程中,把对敏感数据的操作放在try-catch-finall语句块中
措施3:在对数据库进行实际操作之前,调用这个方法:setAutoCommit(false);这个方法的作
用是关闭数据库的自动提交功能,而必须等待显式的执行commit操作
措施4:在所有必需的数据库操作后执行commit方法,将前面所有的操作作为一个整体的事务
一次性提交
措施5:在catch中添加如下语句:
statement.rollback();
statement.setAutoCommit(true);
第一个语句的作用是如果在前面数据库的操作中如果发生异常,则回滚所有的操作
第二个语句的作用是设置数据库的自动提交属性为真,这样后面fianlly中关闭数据库
连接,结果集的操作才会自动提交
3 能说说主程序\主线程\用户线程和DAEMON线程的关系?
程序和进程的区别:程序是静止的,进程是动态的。
进程和线程的区别:进程是资源分配的基本单位,线程是执行的基本单位,同一进程中的所有
线程共享该进程的所有资源,彼此之间可以互相通讯。就好像同一家人住
在同一个屋子里一样,屋子就是资源。而家里面有很多人,这些人共享这
间屋子一样,彼此之间还可以互相交流
主线程和用户现场的区别:每当一个main函数被执行,就会启动一个主线程,这个线程是由系
统启动的,用户线程是由用户启动的,比如你点击了一个按钮
statement.rollback();
statement.setAutoCommit(true);
是connection.rollback();
connection.setAutoCommit(true);