s2sh 框架 线程单例等问题

装逼惯犯 2015-01-12 05:41:28
业务A:每月添加一条数据 如果该月已经添加 则不让添加
现在我的做法是 添加之前发送一个请求 查询一下数据库是不是已经存在该月数据了。

问题 因为是ssh框架 所以当有多个人同时添加的时候 会 重复添加数据。 如果我把这块代码抽出来 弄成单例 并且加上同步锁是不是可行?

或者还有别方法

还有一个问题是

假如用s2sh框架 做一个售票系统 应该要考虑到线程安全问题
...全文
176 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy_think123 2015-01-19
  • 打赏
  • 举报
回复
多线程容易造成死锁,这个你应该需要知道! 售票系统肯定需要考虑线程安全问题,不可能你票都卖完了还在卖票呀!
lsongiu86 2015-01-19
  • 打赏
  • 举报
回复
业务A最好用数据库层面的锁,如果先用悲观锁就直接for update吧
淡定的峰哥 2015-01-19
  • 打赏
  • 举报
回复
查询和添加放到一个事务里面就可以了
ahhmdwg 2015-01-17
  • 打赏
  • 举报
回复
你查一下synchronized的用法 就是解决线程同步的问题 中间用sleep() 调试 内容比较多不能都贴出来给个小例子卖车票:
public class Thread1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ThreadTest t=new ThreadTest();
		new Thread(t).start();
		new Thread(t).start();
		new Thread(t).start();
		new Thread(t).start();
	}

}
class ThreadTest implements Runnable
{
private int tickets=100;
public void run()
{
while(true)
{
sale();
}
}
public synchronized void sale()
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
System.out.println(Thread.currentThread().getName()+
" is saling ticket " + tickets--);
}
}
}

81,094

社区成员

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

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