查看原文
其他

史上最难的一道Java面试题!

匠心零度 CSDN学院 2019-03-28

点击上方“CSDN学院”,选择“置顶公众号”

CSDN学院  IT人的职业提升平台



无意中了解到如下题目,觉得蛮好。题目如下:


public class TestSync2 implements Runnable {
   int b = 100;          

   synchronized void m1() throws InterruptedException {
       b = 1000;
       Thread.sleep(500); //6
       System.out.println("b=" + b);
   }

   synchronized void m2() throws InterruptedException {
       Thread.sleep(250); //5
       b = 2000;
   }

   public static void main(String[] args) throws InterruptedException {
       TestSync2 tt = new TestSync2();
       Thread t = new Thread(tt);  //1
       t.start(); //2

       tt.m2(); //3
       System.out.println("main thread b=" + tt.b); //4
   }

   @Override
   public void run() {
       try {
           m1();
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
   }

}


该程序的输出结果?


公布答案:程序输出结果


main thread b=2000
b=1000

main thread b=1000
b=1000


考察知识点


  • synchronize实例锁。

  • 并发下的内存可见性。


在java中,多线程的程序最难理解、调试,很多时候执行结果并不像我们想象的那样执行。所以在java多线程特别难,依稀记得大学的时候考c语言二级的时候,里面的题目是什么++和很多其他优先级的符合在一起问最后的输出结果,这类题目就想考一些运行符优先级和结合性问题。那个背背就行了,但是java多线程还是需要好好理解才行,靠背是不行的


CSDN学院好课推荐

书到用时方恨少,CSDN学院为你列了一份IT充电包,包含Python 微服务等议题。如果新的一年,你也希望拓展一门新知识,为自己增加更多涨薪和发展机会,千万别错过这些好课!

142讲玩转Spring Boot


课程介绍

本节课主要讲解了如何利用SSM框架制作电商项目,并利用Spring Boot技术升级其项目框架。

该项目采用真实的开发需求来制作和讲解,主要技术点涵盖基于Freemarker技术,搜索引擎Solr技术,Maven技术,Nginx技术,使用Tengine+Lua+GraphicsMagick 实现图片自动裁剪,使用Redis+Token实现多端登录,使用Spring Boot技术升级爱旅行项目框架等。




扎扎实实学Python爬虫视频教程


课程介绍

本期视频课程为大家讲解《Python爬虫:电影评论数据》&《Python爬虫项目直播》技术教程。

通过本课的培训学习,您可以系统应用Python网络爬虫入门编程的核心内容,实战Python爬虫开发、框架运用、数据分析,及数据可视化等操作。




基于SSM技术的在线商城系统[实战视频]


课程介绍

本课程基于【SSM】【Maven】【BootStrap】【MySQL】【BootStrap】技术,使用IntelliJ IDEA开发工具。

使用IntelliJ IDEA工具,基于Maven,运行Spring+SpringMVC+MyBatis框架技术实现在线商城系统,本课程主要是锻炼SSM技术的运用,通过项目实战,加强对框架技术的理解和运用,如果你是SSM的初学者,这套视频课程适合你!! 




7周Spring Cloud微服务架构项目实战 


课程介绍

本门课程围绕电商项目大觅网的业务场景,基于微服务原则设计电商项目,使用多种诸如Eureka、Feign、Hystrix、Ribbon、Zuul、Config等技术。另外基于虚拟化技术Docker+Jenkins实现程序自动发布、基于Mycat实现第三方支付接入、整个项目的高并发测试等。

本次课程以实战为基础,让同学们在实战过程中,独立完成网站的架构搭建和项目开发,掌握其中的实现方式与思路。




Vue.js 2.0之全家桶系列视频课程


课程介绍

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿!
1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等)
2. 采用笔记+代码案例的形式讲解,通俗易懂



肺腑忠告:程序员年后离职跳槽指南!

程序员如何避免“滴滴式裁员”悲剧?

东北到底有没有互联网?!?

一次性掌握机器学习基础知识脉络 

骗局翻新, 暗网活跃度倍增, 2018加密货币犯罪报告敢看吗?

喜欢就点击“好看”吧


阅读原文|立即领取代码资料

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存