java中的synchronized的用法问题

AbnerChai 2004-06-19 12:03:54
在java多线程中,我们常常用如下代码:
synchronized(lockObject)
{
//这里修改共享变量。
}
请问上面synchronized()括号中的参数是怎么给的,怎么有时候是this,有时候又是其它的,有没有一个统一的方法来确定这个变量?

多谢!
...全文
227 21 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
CsdnRob 2004-07-02
synchronized("xxxxxx")中xxxxxx是你要同步修改的变量所属的对象。 比如你有一个变量Xxx a,该变量a属于对象B,那么这时就写作: synchronized(B){ ...... //修改a }
  • 打赏
  • 举报
回复
AbnerChai 2004-07-01
这个对象如何定呢?
  • 打赏
  • 举报
回复
AbnerChai 2004-06-30
多谢!!!
  • 打赏
  • 举报
回复
dryr 2004-06-30
synchronized()中的参数就是你需要同步的对象
  • 打赏
  • 举报
回复
hrlixiang 2004-06-30
synchronized(this)
{

}
  • 打赏
  • 举报
回复
bestdelphier 2004-06-25
好久没用同步了,据我当时学习时候的理解,synchronized("xxxxxx")可以是任何一个对象实例,只要保证它一直是同一个,就能起到同步的作用。比如你String a = new String();,然后就可以synchronized(a),就这样。
  • 打赏
  • 举报
回复
AbnerChai 2004-06-25
请问我这个例子该如何填写啊?!!!!
比如,我现在在servlet中需要对一个全局变量:indexNo更改,
于是,我需要用同步方法锁定它,然后来修改indexNo,
如下所示:
public class MyServlet extends HttpServlet {

private static int indexNo = 0;//全局变量

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
synchronized("xxxxxx") //就是这里的参数!!!!
{
indexNo +=1;
}
}
}
这个xxxx处到底如何填写,是根据什么来的,为什么?


没有人给出实质性的回答吗?

  • 打赏
  • 举报
回复
errantry 2004-06-24
操作系统我三年前就学过?
大牛啊.
  • 打赏
  • 举报
回复
AbnerChai 2004-06-24
比如,我现在在servlet中需要对一个全局变量:indexNo更改,
于是,我需要用同步方法锁定它,然后来修改indexNo,
如下所示:
public class MyServlet extends HttpServlet {

private static int indexNo = 0;//全局变量

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
synchronized("xxxxxx") //就是这里的参数!!!!
{
indexNo +=1;
}
}
}
我想请问一下"lhw99(laoliu)"和"wzrlover(无语无声无欲无泪吾独行!)"
这个xxxx处到底如何填写,是根据什么来的,为什么?
不要光说起来容易,(ps操作系统我三年前就学过)。


  • 打赏
  • 举报
回复
wandou999 2004-06-24
同步进行,没有统一的方法,要根据需要
  • 打赏
  • 举报
回复
lhw99 2004-06-22
如果你学了操作系统,就不会不明白。
  • 打赏
  • 举报
回复
wzrlover 2004-06-22
“这要根据时间情况啊”打错了,是实际情况而定!
  • 打赏
  • 举报
回复
wzrlover 2004-06-22
这要根据时间情况啊,看你程序是想对那个对象加锁,
如上synchronized(lockObject)是对lockObject对象进行加锁,防止lockObject对被调用
而修改了共享变量
  • 打赏
  • 举报
回复
AbnerChai 2004-06-22

就这一个参数的问题,没人肯说明吗?
  • 打赏
  • 举报
回复
rosen 2004-06-21
同步(多线程)的知识很多,一时也说不清出,建议你买本书看看。
  • 打赏
  • 举报
回复
AbnerChai 2004-06-21
请大家多多支持!!
  • 打赏
  • 举报
回复
AbnerChai 2004-06-21
可否请anod给个例子加以说明?多谢.
  • 打赏
  • 举报
回复
shuneng 2004-06-19
看你要修改的变量属于哪一个实体啦。
  • 打赏
  • 举报
回复
Arias 2004-06-19
同步处理的参数设置!
  • 打赏
  • 举报
回复
anod 2004-06-19
关于synchronized的参数问题:最基本的需要是它必须是一个对象。比如用int变量就不行。其次,个人认为也是最重要的,它必须是造成同步的对象。比如你发现了因为某个对象的原因而造成方法不能重入,这时候就要以这个对象为synchronized的参数。
  • 打赏
  • 举报
回复
加载更多回复(1)
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2004-06-19 12:03
社区公告
暂无公告