synchronized相关内容
问 题 Java里static和non-static synchronized方法锁住的分别是对象和类,因而是可以同时执行的,那么会存在修改问题吗?搜索没有得到比较关联的答案,来这里问问大家: 示例代码如下: public class Test { private static int staticVariableOne = 0; public
..
我正在为其他开发人员提供基础架构,而我正在使用Dojo。 在我的Init函数中,我使用'require'方法(当然)其中一个参数是所有模块加载后的回调函数。 问题是客户端不想使用回调。他想要打电话给我,并使用我(使我的Init方法同步) - 并且在我们确定完成加载我们的模块后,给他代码。 我的代码
..
该地图通过collections.synchronized运行。 地图的所有用法都被同步块包围。如果全部被删除,单元测试也将失败。人们会认为它们不是必需的,因为地图是通过collections.synchronized运行的。 一个线程将顺序号码(0,1,2,3 ...)放入地图。移除通过删除的长者进入处理。没有人从地图中删除条目。 另一个线程从地图获取数据。 以下单元测试
..
所以我正在考虑建立兴趣爱好项目,一件事情,只是为了刷新我的编程/设计。 它基本上是一个多线程Web蜘蛛,更新相同的数据结构object-> int。 所以它对于这个使用数据库绝对是过度的,唯一可以想到的是一个用于包含我的数据结构的线程安全的单例。 http://web.archive.org/web/20121106190537/http://www.ibm.com/developer
..
根据 Java语言规范,构造函数不能被标记为同步,因为其他线程不能看到正在创建的对象,直到创建它的线程完成它。这看起来有点奇怪,因为我可以确实有另一个线程查看对象,同时它正在构建: public class Test { public Test(){ final Test me = this; new Thread(){ @Override public void run()
..
直接到这一点,我已经做了一个代码来测试java中的并发,使用同步方法: 代码: public class ThreadTraining { public static class Value { private static int value; public static synchronized void Add(){ value ++; } pu
..
我在面试中被要求建议一个Singleton模式的设计/实现,其中我必须延迟加载类,也不使用同步关键字。我被窒息,无法想出任何东西。然后我开始阅读java并发和concurrentHaspMap。请检查以下内容,并确认您是否看到双重锁定或任何其他问题与此实施的任何问题。 包单身 import java.util.concurrent.ConcurrentHashMap; publ
..
以下变量x是否需要是易失性的? 或者在utils.concurrent锁中的操作与同步块的功能相同(确保它被写入内存,而不是存储在cpu缓存中)? myMethod(){ myLock.lock(); x ++; myLock.unlock(); } 解决方案 如果他们在没有锁的情况下访问其他地方,则是易失的。例如,作为对大小变量的快速只读访问。锁定方法的
..
我有一个限制并发访问方法的问题。我有一个方法 MyService ,可以在很多地方从很多时候调用。此方法必须返回一个 String ,应根据一些规则更新。为此,我有一个 updatedString 类。在获得 String 之前,它确保更新 String ,否则更新它。许多线程可以同时读取 String ,但是ONLY ONE应该同时更新 String ,如果它是已过期。 public f
..
锁定私有字段变量(而不是使用锁定对象)是安全/可接受的做法吗?这样,我可以有不同的锁定用于不同的目的。示例如下: class Test { private Integer x = 0; private Integer y = 0; public void incrementX(){ synchronized(x){ x ++; } } public void
..
List list = new ArrayList(); list.add(“a”); ... list.add(“z”); synchronized(list){ Iterator i = list.iterator(); while(i.hasNext()){ ... } } 和
..
假设我正在一个线程中执行同步代码块,并且在同步块中调用方法,该方法生成另一个线程来处理需要与第一个方法相同的锁的同步代码块。所以在伪Java代码中: public void someMethod(){ synchronized(lock_obj){ / /一大堆东西... //这是块中的最后一个语句 (new Thread(someOtherMethod()))。 } /
..
在concurrent.locks包中使用的AbstractQueuedSynchronizer是什么?有人可以对其方法doAcquireInterruptably和parkAndCheckInterrupt? 解决方案 什么是并发的AbstractQueuedSynchronizer。锁包使用 for AbstractQueuedSynchronizer是同步结构的构建块,使
..
我是Java的新手,我正在参加并发编程课程。我拼命地试图获得一个最小的工作示例,可以帮助演示概念,我学到了像使用'synchronized'关键字和跨线程共享对象。 一直在搜索,但不能得到一个基本框架。 Java程序员,亲切的帮助。 解决方案 这里是一个非常好的例子在两个线程之间共享数组。通常你会看到所有的零,但有时会出现螺旋,你看到其他数字。 final int [] arr
..
下面是一个简单的java程序。它有一个称为“cnt”的计数器,递增,然后添加到名为“监视器”的列表。 “cnt”由多个线程增加,并且值被多个线程添加到“monitor”。 在方法“go monitor.size()应该有相同的值,但他们不。 如果您通过取消注释一个注释的同步块并注释掉当前未注释的代码来更改代码,产生预期结果。此外,如果您将线程计数(THREAD_COUNT)设置为1,代
..
在Java中实现单例模式时,我想出了这个问题。即使下面的例子不是我的真正的代码,但是非常相似的原始代码。 public class ConnectionFactory { private static ConnectionFactory instance; public static synchronized ConnectionFactory getInstance(){ i
..
请参阅此回答。它说: 六个真正糟糕的例子; ... 锁定一个可变字段。例如synchronized(object){object = ...; } 锁定可变字段有什么问题?如果 object 被声明为 final 但是不是一个不可变的类? 解决方案 这是一个坏主意,因为如果另一个线程更改了临界区中的引用,线程将不再看到相同的引用,因此他们不会在同样的对象,从而运行不受控
..
我为一个简单的目的创建了一个小的Java servlet:一旦调用,它将执行以下步骤: 从文件处理数据并对其进行一些更改 将更改写回文件 li> 代码的简化版本: @Override protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletExce
..
在一个很好的文章一些并发提示,一个示例优化了以下行: double getBalance(){ Account acct = verify(name,password); synchronized(acct){return acct.balance; } } 如果我正确理解,同步的要点是确保由该线程读取的acct.balance的值是current,并且对acct.b
..
我知道同步方法和同步块之间的区别,但我不知道同步块部分。 假设我有这个代码 class Test { private int x = 0; private Object lockObject = new Object(); public void incBlock(){ synchronized(lockObject){ x ++; } System.out.
..