synchronized相关内容

iOS 线程安全 - 在线程切换前完成一段代码

我正在寻找一种方法来确保某些代码行始终一起执行(在系统可能切换线程之前). @synchronized 据我所知对此不起作用,因为它只会阻止另一个线程进入该特定块.在我的示例中,我有不同的代码部分相互影响,我想确保它们中的每一个都阻止另一个. 如何实现? 编辑:一个用例可能是我正在播放一个 MIDI 文件.事件在高优先级线程上自动退出.在处理单个事件时,用户可以停止播放器.我想确 ..
发布时间:2021-09-03 20:24:18 移动开发

java ConcurrentModificationException 即使同步

之前已经发布过类似的问题,但这种情况有所不同 - 静态使用可能会使问题复杂化.只是想看看是否有人对如何处理这个问题有想法.即使我在修改它的两个块周围的列表上使用同步,我也得到了 ConcurrentModificationException. 公共类 Foo {公共无效注册(){FooManager.addFoo(this);}}公共课 ABC1 {静态 Foo myfoo;静止的 {myfoo ..
发布时间:2021-09-03 20:24:15 Java开发

当我们使用synchronized关键字时,什么会被锁定?

在阅读线程并发问题并通过synchronized关键字处理它时,我想到的问题是,当我们使用术语lock时,它用于包含 run 方法(或线程的工作)的对象.但是为什么我们不能将术语 lock 用于定义包含 synchronized 的方法 关键字,因为这个关键字意味着一旦一个线程进入方法,那么这个线程只能在方法完成后被JVM调度器打扰? 我正在从头开始学习java,那里写着“对象被锁定"的行, ..
发布时间:2021-09-03 20:24:08 Java开发

Java中是否有同步队列?

Java 中是否有同步的 Queue 类?我正在寻找类似 Vector(它是同步的)与 ArrayList(它不是)之类的东西,而不是实现 List 接口,我正在寻找它来实现 Queue. 请注意,没有 Collections.synchronizedQueue 方法可以包装未同步的队列并使其同步. 解决方案 查看 ArrayBlockingQueue 和另一个 BlockingQu ..
发布时间:2021-09-03 20:24:02 Java开发

同步进入、退出和易失性读写时的缓存刷新

当同步块执行完成时,所有处理器缓存都会被刷新,还是只有同步语句作用于其上的对象才会被刷新?在下面的例子中,当线程完成method2的执行时,obj2的数据是否也刷新到主内存? class cls1 {整数 x=10;}类 cls2{int y=10;}类 cls3{cls1 obj1;cls2 obj2;公共无效方法2(){obj2.y=10;同步(对象1){obj1.x=30;}}公共静态无效 ..
发布时间:2021-09-03 20:23:59 Java开发

同步值,而不是对象

我想用 Java 做这样的事情 public void giveMoney(String userId, int money) {同步(用户 ID){配置文件 p = fetchProfileFromDB(userId);p.setMoney(p.getMoney() + userId);saveProfileToDB(p);}} 当然,同步字符串是不正确的.做这样的事情的正确方法是什么? ..
发布时间:2021-09-03 20:23:56 Java开发

有一个专用的锁对象有用吗?

我正在清理遗留的 Java 代码,我发现了以下结构: final class QuietComplexClass {私有对象锁=新对象();void aMethod() {...同步(锁){....}}} 这里需要加锁的特殊对象吗?当我使用简单的 synchronized (this) 时有什么不同? 我认为当类是公开可见的并且有人可能错误地在类实例上调用 synchronized 时, ..
发布时间:2021-09-03 20:23:52 Java开发

Java/Android:同步 vs 队列实现

我可以问一个 Java 新手问题吗? 我正在从网上下载一些文件.此方法下载(网址位置)被多次调用. public static void download(final String url) {线程 t = 新线程(“下载"){@覆盖公共无效运行(){尝试 {同步(对象){//下载 &保存}} catch(Exception e) {}}};t.start();} 我添加了“同步",以便 ..
发布时间:2021-06-30 19:31:52 Java开发

是否有一组 Win32 API 函数来管理同步队列?

我有一个包含多个工作线程的程序和一个接收作业的主线程.在主线程中,我想将作业排队到一个同步队列中,并让所有工作线程都坐在那里等待队列.当队列中有东西时,我希望工作人员从队列中提取作业,而其余的工作则坐在那里等待另一份工作. 我找到了 CreateMsgQueue (http://msdn.microsoft.com/en-us/library/ms885180.aspx) 但是这似乎只适用于 ..
发布时间:2021-06-30 19:28:39 其他开发

在不同的对象可见性上同步

以下代码显示了与此不同对象的同步: 公共类 A {输入 a,b,c,d;公共无效方法1(对象x){同步(x){//a ,b ,c ,d 是否保证可见性?}}公共同步无效方法2(){一个++;}} 我知道编辑 a、b、c、d 会出现问题,因为在 method1 和 method2 中有不同的锁定,但问题是 method2 刷新的更改对 method1 是否可见?因为他们不使用相同的锁. 解 ..
发布时间:2021-06-04 20:31:49 Java开发

为什么同步不起作用?

我正在尝试编写一个方法,该方法要求设备输入然后接受响应,所有这些都是原子操作. 这是我的代码(query 方法才是真正应该关注的): 公共类 DeviceConnection 实现 Runnable{//查询静态 int 测试 = 0;//对于写行静态 PrintWriter out = null;//(在构造函数中初始化)//只对readline重要静态字符串[] systemMessa ..
发布时间:2021-06-04 20:29:27 Java开发

Java中的互斥方法执行

我有两种方法:a() 和 b().虽然我可以让多个线程同时访问任何方法(这是可取的),但我不希望任何线程在 b() 时输入 a()代码>正在执行.我该怎么做? 编辑 1 假设有 4 个线程并且 Thread 1 正在访问 A().我想要的是所有 4 个线程都不应使用 B(). 解决方案 检查底部的更新 - 我认为这种方法行不通.留下它以获取信息. 您可以使用 信号量: ..
发布时间:2021-06-04 20:11:31 Java开发

什么是“同步壁垒"?

最近,我正在阅读 JSR-133食谱关于Doug Lea的 JSR 133的编译器作家 :JavaTM内存模型和线程规范修订版 . 我在这里读到了这一行: 内存障碍本身不是“同步障碍" 我搜索了一些有关内存障碍和同步障碍之间差异的资源,但找不到任何好的方法.我也无法确定同步障碍与Java与其他语言的比较是否有任何区别. 解决方案 首先,正如@markspace所指出的那样 ..
发布时间:2021-05-28 18:54:06 Java开发

同步成本

在一个高度并发的Java程序中,并假设我的方法正确编写并正确同步,我想知道如何确定哪个更好: void同步某事(){...} 或 void something(){已同步(this){...}//这里不需要同步..//做计算'A'.已同步(this){...}//在这里做其他不需要同步的工作..//做计算'B'.已同步(this){...}} 现在我意识到,如果计算'A'和'B'花 ..
发布时间:2021-05-18 20:25:01 Java开发

澄清参数块同步的含义

我想知道这个表达式是否正确以及它是否意味着:我对字段状态设置了写锁定,然后我对其进行了更改.如果没有,我想知道参数的含义,因为我总是看到 this . 公共类示例{私人int身份;公开示例(int状态){this.status =状态;}公共无效setStatus(int newStatus){已同步(this.status){this.status = newStatus;}}} 解决方案 ..
发布时间:2021-05-18 19:35:11 Java开发