【面试宝典】Java 如何进行线程同步?

面试官:知道线程的同步吗?

小白:知道,线程的同步就是保证多个线程的共同资源在同一时刻只有一个线程在使用和修改,保证数据的唯一和准确。

面试官:那么如何保证数据的唯一性和正确性呢?

小白:我知道的就是加锁,利用synchronized关键字对代码块、方法或者摸个对象加锁。

面试官:嗯,回答正确,那么如何实现同步呢,有哪些方法?

小白:呃 。。。。这个我就不知道了

线程的同步知识也是公司面试必考知识,同学们在去面试前一定要复习一下,下面就给大家复习一下线程的知识:

线程在执行过程中,可以处于下面几种状态:

  • 就绪(Runnable):线程准备运行,不一定立马就能开始执行。
  • 运行中(Running):进程正在执行线程的代码。
  • 等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
  • 睡眠中(Sleeping):线程被强制睡眠。
  • I/O阻塞(Blocked on I/O):等待I/O操作完成。
  • 同步阻塞(Blocked on Synchronization):等待获取锁。
  • 死亡(Dead):线程完成了执行。

线程的同步主要靠下面几个方法:

1、wait():使一个线程处于等待状态,并且释放所持有的对象的lock,注意wait的线程是不会自动唤醒的。 2、sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常,注意这个方法是不会释放锁的,而是持有锁停止多少秒后自动唤醒。 3、notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 4、notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。


原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2016-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ksher

Kubernetes的服务网格(第4部分):通过流量切换持续部署

翻译人:Ksher,该成员来自云+社区翻译社

3918
来自专栏nimomeng的自我进阶

简单免费的文档中心——dokuWiki搭建指南

首先去官网下载页面下载最新版本的Dokuwiki,根据自己需要动态打包,不需要安装:

6.5K4
来自专栏流柯技术学院

JMeter专题系列(六)集合点

集合点:虽然我们的“性能测试”理解为“多用户并发测试”,但客观上来说,真正的并发是不存在的,为了更真实、更接近的实现并发这概念,我们可以在需要压力的地方设置集合...

971
来自专栏大闲人柴毛毛

架构高性能网站秘笈(二)——动态内容缓存

什么是动态内容缓存? 浏览器向服务器发送请求后,服务器会根据浏览器的要求做相应的处理(如:数据库操作),然后将处理后的结果注入JSP页面生成HTML,最后将生...

3286
来自专栏不想当开发的产品不是好测试

唯品会osp简介(转)

Thrift采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,使用代码生成引擎可以在多种语言之中创建高效、无缝的服务,采用二进制格式进行数据的传输,相...

4644
来自专栏云计算与大数据

不能完整地满足服务开发和治理的微服务都是扯淡!!!

聊起微服务的服务注册与发现,很多人立马就会脱口而出 zk、etcd、consul、eureka 这些组件,进而聊到 CAP 如何取舍,性能如何,高可用和容灾是怎...

1442
来自专栏coding

pyenv,让你轻松切换各种python版本

8036
来自专栏Golang语言社区

【Go 语言社区】Golang特性摘要、开发常见库

1 golang自开发项目引入包 需要在$gopath/src下建立项目,如Interactive,才能引入自己的包如 import interactiv...

3688
来自专栏linux运维学习

linux学习第五十九篇:LVS DR模式搭建,keepalived lvs

LVS DR模式搭建 准备工作 三台机器 分发器,也叫调度器(简写为dir) 需要把之前rs机器的网关改回来 85.132 rs1 85.1...

31510
来自专栏linux驱动个人学习

systemd的作用

早上群上讨论了一下systemd的作用,还导致了一个人的直接退群,出于求知心理,搜索了一些systemd,对此也作出了一些相应的整理; 一、systemd的诞生...

4497

扫码关注云+社区

领取腾讯云代金券