V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chengyiqun  ›  全部回复第 2 页 / 共 31 页
回复总数  617
1  2  3  4  5  6  7  8  9  10 ... 31  
46 天前
回复了 ShioWSX 创建的主题 职场话题 各位程序员的护眼技巧分享一下
室内开灯的时候, 我总是喜欢明亮主题
47 天前
回复了 fengmengqiu 创建的主题 Windows win11 台机机卡顿,到底是哪里的问题
看看事件查看器里, 系统日志有没有内核事件
49 天前
回复了 vvve 创建的主题 程序员 pycharm 自动 import 好抽象
import on fly 我早关了, 那玩意儿总会导入意料之外的效果
@ccpp132 说的不够准确,jvm 不是看 cpu 占用高去 JIT 优化的,而是看代码执行次数。
while (su.getA() <= 100) 这个自旋操作内部没有 sleep ,的执行次数是非常多的,会轻易达到 JIT 优化阈值。
@kandaakihito #7 线程 1 执行的时候,永远读取到旧值,while (su.getA() <= 100) 这个自旋操作,其实是一个很耗费 CPU 的操作,你要是在循环里加一个 Thread.sleep(1),就不会卡死了
a++ 是一个复合操作,读取 a 的值、增加值、写回值,这个操作本身不是原子性的(这个你反编译字节码可以看到)
为了保证多线程环境下的准确性, 请务必使用原子变量自增,或者在 incr 方法加上 synchronized 关键字
你这逻辑有问题, a 这个变量是非原子的, 线程 2 修改了 a 变量后, 对线程 1 来说, 不可见, 所以会陷入死循环, 这涉及到多核处理器的缓存同步问题(如果你是在单核处理器上运行, 就没有问题了)
线程读取变量的时候, 从缓存中读取, 而不同的核心之间除了 L3 缓存是共享的, 其他缓存都是不共享的.
你可以加一个内存屏障 private volatile int a = 0;
volatile 让每次读取变量 a 的值的时候总是从内存中读取
不过, 这还不是原子的, 最好使用 AtomitInt 来定义 a 变量

```
public class Solution {

private final AtomicInteger a = new AtomicInteger(0);

public void incr() {
a.incrementAndGet();
}

public int getA() {
return a.get();
}

public static void main(String[] args) throws InterruptedException {
Solution su = new Solution ();

Thread t1 = new Thread(() -> {
while (su.getA() <= 100) {
System.out.println(Thread.currentThread().getName() + " : " + su.getA());
if (su.getA() % 3 == 0) {
System.out.println(su.getA());
su.incr();
}
}
});

Thread t2 = new Thread(() -> {
while (su.getA() <= 100) {
if (su.getA() % 3 == 1) {
System.out.println(su.getA());
su.incr();
}
}
});

Thread t3 = new Thread(() -> {
while (su.getA() <= 100) {
if (su.getA() % 3 == 2) {
System.out.println(su.getA());
su.incr();
}
}
});

t2.start();
t3.start();

System.out.println("current: " + su.getA());
// Thread.sleep(10);
Thread.sleep(100);
// System.out.println(Thread.currentThread().getName() + " : " + su.getA());

t1.start();

}

}
```

这是修改后的代码
@w568w 就是这玩意儿没有多标签, 就不是很方便了
61 天前
回复了 LogicDX342 创建的主题 程序员 关于安卓文件名中特殊字符的处理方式
@wnpllrzodiac 但我没见过哪个系统不支持方括号文件名的?
75 天前
回复了 ChaosAttractor 创建的主题 NAS 执行低级格式化后数据居然没丢?
执行 fastFormat 就不可能是低格了
75 天前
回复了 XhivaW 创建的主题 Android 咨询哪里有 ChatGPT 的 apk 下载
这个可不是什么魔改, BUNDLE=base.apk+split_XXX.apk
这是谷歌官方的格式, 而且是 Android studio 默认的格式
我是 23H2 ,没遇到这个问题
https://i.imgur.com/73sq5kJ.png
97 天前
回复了 yangzzzzzz 创建的主题 Windows win11 24h2 开机后第一次打开程序特别慢
24h2 的问题网友不少有说还是问题不少的,我现在两台电脑都是用的 23h2 ,还是比较稳定的。
之前升级 24h2 时,所有 electron 的程序窗口都变成了空白,就离谱,最后还是回退了,我数个月内是不会升级 24h2 了
鼠标贵可以换热插拔微动板,便宜就直接换鼠标
2023-12-14 14:54:12 +08:00
回复了 michael2016 创建的主题 新手求助 有没有好的祛除图片上的马赛克方案?
如果马赛克能去除,那信息论就被打破了。应该颁发诺贝尔奖。
2023-08-31 11:05:44 +08:00
回复了 Mmahaha 创建的主题 Google 关于 google.com 自动重定向至 google.cn/m
参考: https://vps.dance/google-ip-location.html
2023-08-08 14:09:57 +08:00
回复了 linyimin520812 创建的主题 程序员 分享一种 Spring 应用启动过程采样的方法
感觉不错, mark 了
2023-08-08 14:03:23 +08:00
回复了 looveh 创建的主题 程序员 V 友们怎么管理自己的密码?
keepass, 使用多个网盘同步数据库文件
1  2  3  4  5  6  7  8  9  10 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   986 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.