社区
Java SE
帖子详情
java中的synchronized的用法问题
AbnerChai
2004-06-19 12:03:54
在java多线程中,我们常常用如下代码:
synchronized(lockObject)
{
//这里修改共享变量。
}
请问上面synchronized()括号中的参数是怎么给的,怎么有时候是this,有时候又是其它的,有没有一个统一的方法来确定这个变量?
多谢!
...全文
286
21
打赏
收藏
java中的synchronized的用法问题
在java多线程中,我们常常用如下代码: synchronized(lockObject) { //这里修改共享变量。 } 请问上面synchronized()括号中的参数是怎么给的,怎么有时候是this,有时候又是其它的,有没有一个统一的方法来确定这个变量? 多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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
中
synchronized
用法
java
中
synchronized
用法
Java
中
Synchronized
的
用法
synchronized
是
Java
中
的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3.修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象; 4..
Java
中
Synchronized
的四种
用法
java
中
Synchronized
的四种
用法
,修饰代码块、修饰方法、修饰静态方法、修饰类
java
笔记——
Java
中
Synchronized
的四种
用法
如果在父类
中
的某个方法使用了
synchronized
关键字,而在子类
中
覆盖了这个方法,在子类
中
的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法
中
加上
synchronized
关键字才可以。当然,还可以在子类方法
中
调用父类
中
相应的方法,这样虽然子类
中
的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。我们知道静态方法是属于类的而不属于对象的。修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
Java
中
synchronized
的
用法
当一个线程进入同步代码块时,它就获得了该对象的锁,其他线程将被阻塞,直到执行线程释放锁并退出该代码块。需要注意的是,同步代码块的粒度比同步方法更细,可以有效减小同步开销。非静态同步方法的锁是该方法所属对象的实例,而静态同步方法的锁是该方法所属类的Class对象。这意味着,当一个线程进入静态同步方法时,其他线程将不能同时访问该类的静态同步方法,但可以同时访问该类的非静态同步方法和其他非同步方法。当一个线程进入同步方法时,它就获得了该方法所对应的对象的锁,其他线程将被阻塞,直到执行线程释放锁并退出该方法。
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章