synchronized相关内容

垃圾收集和同步可见性

我读过有关将对象标记为volatile的方法,不能保证其成员的可见性(我不是说线程安全性只是内存可见性,引用: JVM仅将对象引用视为易失性,而不是将驻留在堆上的对象数据本身 我的问题: 如果成员已被编辑,则同步将确保成员(在同一锁定对象上)的可见性.那是因为该事件发生在锁定结束(释放)之前,从而使操作对其他线程可见吗? 在对象上使用易失性的情况下,对象引用也会更改.如果旧的引 ..
发布时间:2020-05-13 21:46:13 Java开发

语句执行与同步方法执行交织

我在理解同步关键字功能时遇到了一些麻烦. 根据Java文档和其他教程,可以说,当使用synced关键字时,在两个线程之间不可能在该方法的语句之间进行交织. 但是,请参见下面的代码. public class LockThread implements Runnable { String name; public LockThread(String name) { ..
发布时间:2020-05-13 21:39:13 Java开发

Java中的同步方法和同步块有什么区别?

Java中的同步方法和同步块有什么区别? 我一直在网上搜索答案,人们似乎对此不太确定:-( 我认为两者之间没有区别,只是synch块的作用域可能更局限,因此锁定的时间更短?? 在使用静态方法锁定的情况下,采用什么锁定?班级锁定是什么意思? 解决方案 同步方法将方法接收器用作锁(例如,对于非静态方法,为this;对于静态方法,则为封闭类). Synchronized块将表达 ..

线程可以在Java中一次在两个锁上调用wait()吗?

我一直在弄乱Java中的线程来处理它们(这似乎是最好的方法),现在了解了sync,wait()和notify()的情况. 我很好奇是否有一种方法可以同时对两个资源进行wait().我认为以下内容并不能完全满足我的想法( edit :请注意,此示例中省去了通常的while循环,只专注于释放两个资源): synchronized(token1) { synchronized(token ..
发布时间:2020-05-11 22:06:54 Java开发

如何在Java中对同步方法进行单元测试?

我很好奇知道如何在Java中对同步方法进行单元测试.我们可以使用诸如jMockit,Mockito之类的模拟框架吗? 我正在寻找类似于以下有趣帖子的答案: http ://www.boards.ie/vbulletin/showthread.php?t = 2056674659 不幸的是,没有必要的讨论,没有建议/答案! 谢谢, Cot 解决方案 我很好奇知道如何在 ..
发布时间:2020-05-10 01:43:03 Java开发

多线程-为什么一个线程会完成所有工作?

我正在使用两个线程将两个矩阵相乘(但是,程序也是按比例缩放编写的,因此我可以使用三个,四个等线程来代替).每个线程为最终矩阵的一行(或一列)计算/执行功.如果一个线程在一行上进行工作,则其他线程不应在该行上工作.它/他们应该继续前进到下一个可用行. 首先,我不确定实现问题的方式是否正确.如果您能找到更好的方法,请告诉我. 其次,我的测试方式是,每次测试(使用不同大小的矩阵,甚至是巨大的 ..
发布时间:2020-05-07 19:45:22 Java开发

如何有条件地锁定Java?

我一直在使用Java的synchronized块来使我的代码线程部分安全.我正在将通常可以使用synchronized块的数据结构移植到Java,但是我并不总是知道如何以典型的Java方式使用它们. 以下是一种情况的示例: myMethod (Bool useLock) { if (useLock) { //locks the follo ..
发布时间:2020-05-03 06:06:31 Java开发

如何检查对象是否正在@synchronized

有时,我编写了以下代码来同步例程: @synchronized(objToBeSync){ .... } 当两个线程尝试同时访问同步块时,一个线程将阻塞其他线程,直到一个线程退出同步块. 但是,有时我不希望一个块阻塞另一个对象,但是其他对象则检查对象是否正在同步,然后再执行其他操作,所以我必须做这样的事情: @synchronized(objToBeSync){ _i ..
发布时间:2020-05-03 06:02:17 移动开发

当锁包含非最终对象时,该对象的引用是否仍可以由另一个线程更改?

当需要同步对象时,IDE会抱怨是否未将其设置为非最终值(因为其引用不是持久性的): private static Object myTable; .... synchronized(myTable){ //IDE complains! //access myTable here... } 我们都知道,如果持有锁的线程更改了非最终对象的引用,IDE会抱怨阻止另 ..
发布时间:2020-05-03 05:57:07 Java开发

Java:如何检查是否可以获取锁?

如果要确保以Java独占访问对象,可以编写如下内容: ... Zoo zoo = findZoo(); synchronized(zoo) { zoo.feedAllTheAnimals(); ... } 是否可以检查对象当前是否被锁定?如果另一个线程正在访问zoo,我不希望我的线程等待.如果zoo未锁定,我希望我的线程获取该锁并执行synchronized块;如果没有, ..
发布时间:2020-05-03 05:55:34 Java开发

如何在Java中获取自定义的syncedList?

我有一个自定义列表MyList,它扩展了ArrayList,像这样: class MyList extends ArrayList{ [some methods...] } 由于我具有对列表的并发读取和写入,因此我想对其进行同步: MyList mylist = (MyList) Collections.synchronizedList ..
发布时间:2020-05-02 08:20:30 Java开发

如何在Java中返回线程安全/不变集合?

在我正在编码的项目中,我需要从函数返回线程安全且不变的视图.但是,我不确定.由于synchronizedList和unmodifiableList仅返回列表的视图,因此我不知道 Collections.synchronizedList(Collections.unmodifiableList(this.data)); 可以解决问题. 任何人都可以告诉我这是否正确,如果不正确,是否 ..
发布时间:2020-05-02 07:10:16 Java开发

跨JVM同步方法

如何跨JVM同步方法? 我的示例是一个Web应用程序,该应用程序限制一个用户名不能多次登录(换句话说,第一个用户可以登录,但是如果另一个用户使用相同的用户名登录,他将被拒绝). 该Web应用程序部署在多个服务器上,因此有多个JVM,并且用户可能会尝试使用不同的服务器进行登录,具体取决于负载平衡器. 这是该方法的外观 public synchronized static Se ..
发布时间:2020-04-25 07:19:39 Java开发