需要在servlet中独占访问一个函数,synchronized(this)是否可行?

叶子哟 2005-07-29 03:14:11
给用户分配唯一的ID号,所以需要独占访问,此时不能有其它用户访问此函数
synchronized(this) //加同步锁
{
userId = getNewId(uid);
}
用以上方法是否可行,有没有好的方法?
...全文
184 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
congliu 2005-08-01
  • 打赏
  • 举报
回复
可以。
nf_happy 2005-08-01
  • 打赏
  • 举报
回复
这样做
public static Object onlyYou = new Object();

public myFunction(){
...
synchronized(onlyYou){
userId = getNewId(uid);
}
...
}

用onlyYou这个对象的机锁,onlyYou系统中只有一个
叶子哟 2005-07-30
  • 打赏
  • 举报
回复
我想知道会不会影响到用户的访问,一个用户访问此时其它用户能否访问到这个servlet还是挂起来等待或是根本就不能访问
另外我的web.xml中有两个servlet-mapping,会影响到映射的另一个servlet吗?
easydozer 2005-07-29
  • 打赏
  • 举报
回复
可以,但不建议你这么做,servlet本身是一个单实例多线程的,
如果你这么做,servlet就有点成为了单实例单线程了,对于性能是极不利的.

你可以把synchronized放到getNewId方法里面,只同步你需要独占的部分代码

eureka0891 2005-07-29
  • 打赏
  • 举报
回复
一般来说是没问题的,不对,你得保证你的这个servlet只有一个(即在web.xml中只有一个servlet-mapping)

81,094

社区成员

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

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