如何理解方法同步?

leonard_sun 2006-01-29 10:36:50
1 同一时间只能有一个线程访问它,那如果我是分别来自两个不同的实例对象可不可以同时访问??
2 如何将同步应用到数据库的回滚和数据的完整性上?
3 能说说主程序\主线程\用户线程和DAEMON线程的关系?
...全文
387 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-03-06
  • 打赏
  • 举报
回复
????????
chg2008 2006-02-08
  • 打赏
  • 举报
回复
不错,路过学习......
beijixing022 2006-02-07
  • 打赏
  • 举报
回复
不错的问题,
回答的也很好, 学习!!
pengpenglin 2006-01-30
  • 打赏
  • 举报
回复
不好意思,上面有点错误:
statement.rollback();
statement.setAutoCommit(true);
是connection.rollback();
connection.setAutoCommit(true);
pengpenglin 2006-01-30
  • 打赏
  • 举报
回复
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函数被执行,就会启动一个主线程,这个线程是由系
统启动的,用户线程是由用户启动的,比如你点击了一个按钮


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧