20k月薪你应该知道的

String、StringBuffer、StringBuilder

String 不可变字符序列,JDK1.0

StringBuffer 线程安全的可变字符序列,JDK1.0

StringBuilder 非线程安全的可变字符序列,JDK1.5

String是一个类,不是基本数据类型,String是值传入,非引用传入。

StringBuffer和StringBuilder两个很像,在线程安全方面,StringBuffer允许多线程进行字符操作,这是因为在StringBuffer的很多方法都被关键字synnchronized修饰,而StringBuilder没有

StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。另外,JVM运行程序主要时间耗费是在创建对象和回收对象上。

单线程运行效率: String << StringBuffer < StringBuilder

非线程安全:StringBuilder

线程安全:StringBuffer

单线程最佳:StringBuilder

sleep和wait的区别

sleep是线程类Thread的方法,执行此方法会导致当前线程暂停指定时间,给其他线程执行机会,但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁。sleep可以在任何地方使用。sleep必须捕获异常。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对次对象调用notify或者notifyAll方法后本线程才获得对象锁进入运行状态。使用wait的时候必须使用同步控制块(synchronized)或者同步控制方法。wait不用捕获异常

抽象类和接口

抽象类:

  1. 抽象类可以有构造方法
  1. 抽象类中可以存在普通属性,方法,静态属性和方法
  2. 抽象类中可以存在抽象方法
  3. 如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法
  4. 抽象类中的抽象方法,需要有子类实现,如果子类不识闲,则子类也需要定义为抽象的

接口:

  1. 在接口中只有方法的生命,没有方法体
  1. 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
  2. 接口中没有构造方法,永远都被public来修饰
  3. 接口中没有改造方法,也不能实例化接口的对象
  4. 接口可以实现多继承
  5. 接口定义的方法都需要有实现类来实现,如果实现类不能实现接口中的多有方法则实现需要定义为抽象类

Java异常

Exception异常:是程序本身可以处理的异常
Error错误:是程序无法处理的错误,这些错误表示故障发生于虚拟机自身,或者发生在虚拟机试图执行应用时,一般不需要程序处理

检查异常(编译器要求必须处置的异常):除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于检查异常,这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句进行捕获,要么用throws子句抛出,否则编译不过

非检查异常(编译器不要求处置的异常):包括运行时异常(RuntimeException及其子类)和错误(Error)

java类的成员初始化顺序和初始化块知识

属性、方法、构造方法和自由块都是类中的成员,在创建类的对象时,类中各成员的执行顺序:

  1. 父类静态成员和静态初始化快,按在代码中出现的顺序依次执行。
  1. 子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
  2. 父类的实例成员和实例初始化块,按在代码中出现的顺序依次执行。
  3. 执行父类的构造方法。
  4. 子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
  5. 执行子类的构造方法。

Java锁

Java中的锁作为并发共享数据,保证一致性的工具,在java平台有多种实现。

  1. 自旋锁 ,自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁
  1. 阻塞锁 被阻塞的线程,不会争夺锁。
  2. 可重入锁 多次进入改锁的域
  3. 读写锁
  4. 互斥锁 锁本身就是互斥的
  5. 悲观锁 不相信,这里会是安全的,必须全部上锁
  6. 乐观锁 相信,这里是安全的。
  7. 公平锁 有优先级的锁
  8. 非公平锁 无优先级的锁
  9. 偏向锁 无竞争不锁,有竞争挂起,转为轻量锁
  10. 对象锁 锁住对象
  11. 线程锁
  12. 锁粗化 多锁变成一个,自己处理
  13. 轻量级锁 CAS 实现
  14. 锁消除 偏向锁就是锁消除的一种
  15. 锁膨胀 jvm实现,锁粗化
  16. 信号量 使用阻塞锁 实现的一种策略
  17. 排它锁:X锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

产生死锁的主要原因

  1. 因为系统资源不足
  1. 进程运行推进的顺序不合适
  2. 资源分配不当

如果系统资源充足,进程的资源请求都能够得到满足,出现死锁的可能性很低,否则就会因为争夺优先的资源而陷入死锁。进程运行推进顺序与速度不同,也可能产生死锁

产生死锁的4个必要条件

  1. 互斥条件:一个资源每次只能被一个进程使用
  1. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
  2. 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺
  3. 循环等待条件:若干进程之间形成一种头尾详解的循环等待资源关系
    上面是产生死锁的4个条件,只要系统发生死锁,这些条件必然成立,只要上述条件之一不满足,就不会产生死锁

死锁的解除与预防

理解了产生死锁的原因和产生死锁的四个必要条件,就可以最大可能的避免,预防和接触死锁。
在系统设计,进程调度等方面注意如何不让产生死锁的4个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的的分配要给予合理的规划。

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

推荐阅读更多精彩内容

  • 集合框架: 1)特点:存储对象;长度可变;存储对象的类型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang阅读 1,246评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,063评论 0 62
  • 不知不觉间,来北京已经快三个月了,说实话,相比于待了两年多的深圳,这边的日子过得并不见得比之前好多少。深圳过于安...
    落寒残雪阅读 264评论 0 0
  • 今天在逛知乎的时候突然想起去看一下英语学习的一些经验帖子,然后在看着看着的时候,突然想起前些天在逛的时候下载的那本...
    萧牧寒阅读 562评论 0 1