1.锁就是同步器吗 2.同步器和同步有什么关系?

来源:4-6 遭遇面试官深度问synchronized的本质

慕后端2248651

2021-03-19

1.锁就是同步器吗 2.同步器和同步有什么关系?

写回答

2回答

求老仙

2021-03-19

// 绝对的同步(sequencial synchronous)
i++;
i++;

// 部分同步(partial synchronous)
// 多个i++肯定有先后关系(存在同步关系),虽然我不知道是什么——姑且称之为排了队,不知道顺序
new Thread(() -> {
  lock();
  i++;
  unlock()
});

// 不同步
// 多个i++没有顺序关系,完全无法估计后果
new Thread(() -> {
  i++
})


1
0

求老仙

2021-03-19

同步器是用来同步的。 什么是同步,简单说,同步就是有序。同步有级别,最高级别的是线性一致——在任何历史时刻你都知道发生了什么。

锁是一种同步器。锁住的临界区,多个线程来执行,排队进入,排队出去,进入有序状态。 这个是部分一致,因为谁先谁后,你不好判断。比如两个i++,究竟谁先执行,不好说。但是他们基本上,同步了,虽然不知道先后,但是不会并行(有序)。

CountDownLatch也是同步器,它设定了一个同步点。同步点之前的事情,和同步点之后的事情,会有序。同步点之前都走完,才走同步点之后的事情。 阻塞队列也同步器,它规定了元素入队、出队的顺序。 


3
0

笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

深度剖析大厂面试高频真题,让你秒变offer收割机

1783 学习 · 314 问题

查看课程