
多线程
文章平均质量分 89
凌寒ᨐ舞
欲买桂花同载酒,终不似少年游
展开
-
Java的非阻塞同步
所以只能靠硬件来完成。当执行操作时,只有当 V 的值等于 A,才将 V 的值更新为 B。随着硬件指令集的发展,我们可以使用基于冲突检测的乐观并发策略: 先进行操作,如果没有其它线程争用共享数据,那操作就成功了,否则采取补偿措施(不断地重试,直到成功为止)。通过这种方式,硬件级的原子操作确保了即使在高度并发的场况下,每次检查和修改账户余额的操作都是不可分割的,从而避免了数据不一致的问题。结果是,两个操作都认为账户A有足够的余额进行转账,可能导致账户A的余额变成负值,这在现实世界是不可接受的。原创 2024-01-26 16:43:15 · 457 阅读 · 0 评论 -
共享模型之管程
1、共享带来的问题线程出现问题的根本原因是因为线程上下文切换,导致线程里的指令没有执行完就切换执行其它线程了,下面举一个例子 Test13.java static int count = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(()->{ for (int i = 1;i<5000;i++)原创 2023-10-18 21:22:09 · 221 阅读 · 0 评论 -
java线程
使用继承方式的好处是方便传参,你可以在子类里面添加成员变量,通过set方法设置参数或者通过构造函数进行传递,而如果使用Runnable方式,则只能使用主线程里面被声明为final的变量。不好的地方是Java不支持多继承,如果继承了Thread类,那么子类不能再继承其他类,而Runable则没有这个限制。前两种方式都没办法拿到任务的返回结果,但是Futuretask方式可以。原创 2023-10-17 21:56:10 · 217 阅读 · 0 评论