synchronized相关内容
如果我在同一个类上同步了两个方法,它们可以同时在同一个对象上运行吗?例如: class A {公共同步无效方法A(){//方法A}公共同步无效方法B(){//方法B}} 我知道我不能在两个不同的线程中对同一个对象运行两次 methodA().methodB() 中的相同内容. 但是我可以在 methodA() 仍在运行时在不同的线程上运行 methodB() 吗?(同一个对象) 解
..
我对线程的概念还很陌生,并尝试更多地了解它.最近,我看到了一篇关于 What Volatile 的博文Means in Java 作者:Jeremy Manson,他写道: 当一个线程写入一个 volatile 变量,而另一个线程看到那个写,第一个线程告诉第二个关于所有内存的内容,直到它执行写入该易失性多变的.[...] 所有 线程 1 看到的内存内容,之前它写入 [volatile] re
..
这段java代码是什么意思?它会锁定 MyClass 的所有对象吗? synchronized(MyClass.class) {//现在MyClass的所有对象都是线程安全的吗??} 以上代码与此代码有何不同: synchronized(this) {//现在MyClass的所有对象都是线程安全的吗??} 解决方案 片段 synchronized(X.class) 使用类实例作为监视器.
..
我正在阅读来自 CodeRanch 的 线程 说抽象方法不能同步,因为抽象类不能被实例化,意味着没有对象要锁定. 这没有意义,因为抽象类是子类的定义(契约).同步方法的抽象定义不需要锁定,孩子需要.所有抽象标题都表明子进程必须同步这个方法.我的逻辑是否正确?如果不是,有人可以解释为什么我错了吗? 解决方案 关于无法实例化抽象类的评论是垃圾.考虑到它必须是抽象的实例方法,因此肯定 可以
..
每次我在非最终类字段上同步时都会显示警告.代码如下: 公共类X{私有对象 o;公共无效 setO(对象 o){这个.o = o;}公共无效 x(){synchronized (o)//在非最终字段上同步{}}} 所以我用以下方式改变了编码: 公共类 X{私有最终对象 o;公共 X(){o = 新对象();}公共无效 x(){同步 (o){}}} 我不确定上面的代码是否是在非 final
..
此外,被设置的对象是否必须是线程安全的,以保证我们知道会话中存储的对象的状态是已知的. 另外,我在网上阅读了一些建议使用的内容: 同步(会话){session.setAttribute("abc", "abc");} 这是一个有效的建议吗? 解决方案 不,它们不是线程安全的,根据 IBM - Java 理论与实践:所有有状态的 Web 应用程序都被破坏了吗?.您需要同步.
..
如果我在同一个类中有 2 个同步方法,但每个方法访问不同的变量,2 个线程可以同时访问这 2 个方法吗?锁定发生在对象上,还是像同步方法中的变量一样具体? 示例: class X {私人内部;私人国际b;公共同步无效 addA(){一个++;}公共同步无效 addB(){b++;}} 2 个线程可以访问同一个类 X 的实例,同时执行 x.addA() 和 x.addB() 吗? 解
..
我有一个 web 应用程序,我正在对它进行一些负载/性能测试,特别是在我们预计有几百个用户访问同一页面并在此页面上大约每 10 秒刷新一次的功能上.我们发现可以使用此函数进行改进的一个方面是将来自 Web 服务的响应缓存一段时间,因为数据没有改变. 在实现了这个基本的缓存之后,在一些进一步的测试中我发现我没有考虑并发线程如何同时访问缓存.我发现在大约 100 毫秒内,大约有 50 个线程试图
..
Java 文档说: 不可能在同一台机器上两次调用同步方法同一对象交错. 这对静态方法意味着什么?既然静态方法没有关联对象,那么synchronized关键字会锁定类而不是对象吗? 解决方案 由于静态方法没有关联对象,synchronized 关键字会锁定类而不是对象吗? 是的.:)
..
谁能用一个例子告诉我同步方法相对于同步块的优势? 解决方案 谁能通过一个例子告诉我同步方法相对于同步块的优势?谢谢. 与块相比,使用同步方法没有明显的优势. 也许唯一的(但我不会称其为优势)是您不需要包含对象引用 this. 方法: public synchronized void method() {//从这里阻止“this".............}//到这里
..
每当 SO 上出现关于 Java 同步的问题时,有些人非常渴望指出应该避免 synchronized(this).相反,他们声称,最好锁定私有引用. 给出的一些原因是: 一些邪恶代码 可能会偷你的锁(这个很受欢迎,也有一个“意外"变体) 同一类中的所有同步方法使用完全相同的方法锁,这会降低吞吐量 你也(不必要地)暴露了很多信息 其他人,包括我,认为 synchronized(
..
我对 synchronized 关键字的用法和意义有一些疑问. synchronized 关键字的意义是什么? 方法什么时候应该同步? 这在编程和逻辑上意味着什么? 解决方案 synchronized 关键字是关于不同线程对相同变量、对象和资源的读取和写入.这在 Java 中不是一个微不足道的话题,但这里引用了 Sun: synchronized 方法实现了一个简单的防止线
..
谁能用一个例子告诉我同步方法相对于同步块的优势? 解决方案 谁能通过一个例子告诉我同步方法相对于同步块的优势?谢谢. 与块相比,使用同步方法没有明显的优势. 也许唯一的(但我不会称其为优势)是您不需要包含对象引用 this. 方法: public synchronized void method() {//从这里阻止“this".............}//到这里
..
每当 SO 上出现关于 Java 同步的问题时,有些人非常渴望指出应该避免 synchronized(this).相反,他们声称,最好锁定私有引用. 给出的一些原因是: 一些邪恶代码 可能会偷你的锁(这个很受欢迎,也有一个“意外"变体) 同一类中的所有同步方法使用完全相同的方法锁,这会降低吞吐量 你也(不必要地)暴露了很多信息 其他人,包括我,认为 synchronized(
..
我对 synchronized 关键字的用法和意义有一些疑问. synchronized 关键字的意义是什么? 方法什么时候应该同步? 这在编程和逻辑上意味着什么? 解决方案 synchronized 关键字是关于不同线程对相同变量、对象和资源的读取和写入.这在 Java 中不是一个微不足道的话题,但这里引用了 Sun: synchronized 方法实现了一个简单的防止线
..
当我们说 ArrayList 不同步是什么意思? 是不是说如果我们在对象范围内声明一个ArrayList,访问对象的多个线程都有机会修改列表? 解决方案 我们说 ArrayList 不同步是什么意思? 这意味着从多个线程访问 ArrayList 实例可能不安全(阅读,“可能导致意外行为"或“可能无法像宣传的那样工作"). 进一步阅读: Java 中的同步和线程安
..
我正在扩展 ArrayList 以创建一个自定义 ArrayList,可以在对其进行迭代时使用普通的 ArrayList 方法对其进行修改.为此,我还创建了一个迭代器. 公共类 SynchronizedList扩展 ArrayList{//这里的字段//这里的构造函数和方法公共类 SynchronizedListIterator实现 Iterator{公共整数索引;私人 E 电流;公共布尔 ha
..
我正在尝试学习如何在 Java 中暂停和恢复线程.我正在使用一个 Applet,它 implements Runnable 有 2 个按钮“开始"和“停止". public void init(){th = 新线程(这个);th.start();btn_increment = new Button("开始");btn_increment.addActionListener(new ActionL
..
我最近发现使用 synchronized 不会防止任何死锁. 例如在此代码中: ArrayList 任务;...公共无效做(工作){同步(任务){任务.添加(工作);}同步(这个){通知();}}公共无效运行(){而(真){for (int = 0;i
..
我有一个由两部分组成的问题. 我有:private static ConcurrentHashMap服务器= null;我后来填充.在方法 getAllServers 中,我这样做: public static synchronized ConcurrentHashMapgetAllServers() {ConcurrentHashMaptoReturn = new ConcurrentH
..