实现线程同步 发表于 2019-08-05 更新于 2020-03-01 分类于 多线程 线程同步 由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问造成的这种问题。由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized 方法和 synchronized 块。 阅读全文 »
多线程实现 发表于 2019-08-04 分类于 多线程 基本概念 多线程是Java语言的重要特性,大量应用于网络编程、服务器端程序的开发,最常见的UI界面底层原理、操作系统底层原理都大量使用了多线程。我们可以流畅的点击软件或者游戏中的各种按钮,其实,底层就是多线程的应用。UI界面的主线程绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作。当这个线程工作完毕后,再更新到主界面上。我们可以上百人、上千人、上万人同时访问某个网站,其实,也是基于网站服务器的多线程原理。如果没有多线程,服务器处理速度会极大降低。 阅读全文 »
Comparable接口测试 发表于 2019-07-27 更新于 2020-03-01 分类于 Java Comparable接口测试在写某些程序的时候我们往往需要排序,特别是是对容器进行排序的时候,往往是很麻烦的,这时候我们就可以继承Comparable接口中的compareTo方法来进行排序。 阅读全文 »
包装类的缓存问题 发表于 2019-07-20 更新于 2020-03-01 分类于 Java 缓存问题 缓存处理的原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。 阅读全文 »
排序算法 发表于 2019-07-19 更新于 2020-03-01 分类于 Java 排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养 算法重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交换慢慢“浮”到数列的顶端。 阅读全文 »
抽象方法和抽象类 发表于 2019-07-19 更新于 2020-03-01 分类于 Java 抽象方法 使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。 阅读全文 »
多态(Polymorphism) 发表于 2019-07-17 更新于 2020-03-01 分类于 Java 多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。 比如:同样是调用人的“休息”方法,张三是睡觉,李四是旅游,数学教授是做数学题; 同样是调用人“吃饭”的方法,中国人用筷子吃饭,英国人用刀叉吃饭,印度人用手吃饭。 阅读全文 »
Java垃圾回收机制(Garbage Collection) 发表于 2019-07-16 更新于 2020-03-01 分类于 Java 垃圾回收机制Java引入了垃圾回收机制,令C++程序员头疼的内存管理问题迎刃而解,Java程序员可以将更多的精力放到业务逻辑上而不是内存管理工作上,大大提高了开发效率 阅读全文 »