那些你没去深入了解的JAVA知识

  1. Thread start 方法和 run 方法到底哟哟什么区别?
  2. Thread 只是一个线程类的管理,而不是实现,更不是抽象!
  • 两个方法均唤起了 其维护的target (也就是一个 Runable 接口的实现)的run方法,最大的区别是 直接调 run 方法还是在当前线程执行的,而start 才是另起一个县城执行
  • Thread 的start 方法: 做的工作包括 : 1. 维护了这个子线程的状态 2. 将线程(Thread) 添加到线程组中 3 : 通过调用 本地方法start0()开启 子线程执行
  1. 解释下Tomcat 处理请求的线程模型
  • 收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,这样解解决了主线程的阻塞问题
  • Tomcat 维护一个处理请求线程的线程池
  • 一旦有请求,Tomcat会初始化minSapreThreads设置的线程数;
  1. 怎么检测一个线程是否持有对象监视器
    Thread类提供了一个holdsLock(Object obj)方法,当且仅当对象obj的监视器被某条线程持有的时候才会返回true,注意这是一个static方法,这意味着“某条线程”指的是当前线程。

  2. 为什么wait,notify()notifyAll()两个方法放在了Object下面而不是Thread下面?

    • 这三个方法其实都是属于锁的,而每个锁恰好都是对象(Object)
    • 基于以上条件,所以这三个方法都需要在同步代码块里面调用,因为只有在对同步代码块中,锁对象的锁才是有效的
  3. 为什么String被设计为final类?

    • 因为String是默认被缓存到JVM的String Pool中,String 对象会被多个Client共享,如果一个Client修改了String会导致其他Client出现错误
    • String不支持继承的另一个原因是就是防止修改其hashcode和equals 方法,因为这两个方法太重要了!
  4. Java yield,wait,sleep之间的区别

  • yield :释放CPU资源给线程调控器,调用yield()方法后的线程,在后续也很有可能会获取到CPU资源,继而继续执行线程中的方法
  • sleep:相对于yield来说,并不会释放CPU资源,它只是sleep而已
  • wait,notify 这样的方法是属于锁的,跟sleep和yiled不同,他们是并发模型的实现!
  1. Java 枚举实现的原理
    参考文章

  2. 方法中向匿名类传递参数,为什么需要将参数设置为final?

    1. 匿名内部类不能含有构造函数和 静态对象,静态方法
      匿名内部类在编译时,像其他内部类一样被编译为一个class文件,
      简单理解就是,拷贝引用,为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。
  3. 方法锁、对象锁和类锁的意义和区别?
    参考

  4. StringBuilder 和 String.concat的性能比较

    1. 参考

    2. 性能参考

    3. Java中字符串拼接不要直接使用+拼接。一般Java Complier会直接将+ 优化为new 一个 Stringbuilder 和 toString两个补奏

    4. 使用StringBuilder或者StringBuffer时,尽可能准确地估算capacity,并在构造时指定,避免内存浪费和频繁的扩容及复制。如果不指定StringBuilder的话,每次容量达到临界值,StringBuilder会将容量double容量,这样的话会很浪费
      在没有线程安全问题时使用StringBuilder, 否则使用StringBuffer。
      两个字符串拼接直接调用String.concat性能最好。

      经实践发现,concat也会被StringBuilder的append

  5. 静态代码块、构造代码块、构造函数以及Java类初始化顺序
    1. 类被加载时,静态代码块执行
    2. 对象初始化时,构造代码块执行,且优先于构造函数执行

  6. Java中的对象引用
    在Java中,对于原始类型变量保存的是真正的value,对于Object变量来说,变量保存的都是指向对象的指针。。映射到集合中
    相对于方法传递来说,对于
    1. 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
    2. 如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。
    对于添加到内存中也是类似
    (1)如果是基本数据类型,则是value
    (2) 如果是复合数据类型,则是引用的地址;String b="a"; lists.add(b); b="bbb";最后输出还是a,
    原因是存放的不是b,而是b第一次指向的地址,修改b=”bbb”后只是修改了b指向的地址。

  7. Java 中的浮点型问题
    https://stackoverflow.com/questions/13467849/double-multiplied-by-100-and-then-cast-to-long-is-giving-wrong-value)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,582评论 0 11
  • 你说想携一人流浪四方,就算路程太颠簸前程太漫长。你说想握住一个人的手,即便寒风凛冽也不撒开,并肩战斗,赴汤蹈火。 ...
    啤酒鲈鱼阅读 444评论 18 13
  • 一件事坚持了那么久而你依旧觉得舒服,那这件事对于你来说就是对的。 今天看到浩浩的公众号上,有这样的一句话,读起来很...
    长亭微雨阅读 303评论 0 0