Java基础知识
编程小狮子
这个作者很懒,什么都没留下…
展开
-
简述Java中的OOM并给出代码例子
所谓OOM是OutOfMemory的简写当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error最常见的三种OOM:Permanent Generation space(永久保存区域)java永久代溢出,即方法区溢出-XX:PermSize -XX:MaxPermSize 调整Heap space(堆区域)java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。-Xms,-Xmx调整Java Stack原创 2020-12-20 20:32:19 · 671 阅读 · 0 评论 -
Java中关于Object类你必须知道的方法
常用方法:- clone() 创建并返回次对象的副本getClass();返回此 Object的运行时类。finalize();与垃圾收集有关。当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。equals(Object obj) ;指示一些其他对象是否等于此。toString();返回对象的字符串表示形式。hashCode();返回对象的哈希码值。notify();唤醒正在等待对象监视器的单个线程。notifyAll();唤醒正在等待对象监视器原创 2020-12-20 20:14:53 · 111 阅读 · 0 评论 -
Java中的乐观锁和悲观锁
乐观锁和悲观锁悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。Java中,synchronized关键字和Lock的实现类都是悲观锁。乐观锁总是原创 2020-09-30 09:27:16 · 146 阅读 · 0 评论 -
Java线程中的常见方法使用详解
线程中常见方法的使用常见方法简介start()启动一个新线程,在新的线程 运行 run 方法 中的代码start 方法只是让线程进入就绪,里面代码不一定立刻 运行(CPU 的时间片还没分给它)。每个线程对象的 start方法只能调用一次,如果调用了多次会出现 IllegalThreadStateExceptionrun()新线程启动后会调用的方法如果在构造 Thread 对象时传递了 Runnable 参数,则 线程启动后会调用 Runnable 中的 run 方法,否则默 认不执行原创 2020-07-22 11:35:35 · 253 阅读 · 0 评论 -
详解Java创建线程的方式源码+案例分析
创建线程的三种方式通过Thread创建线程代码如下:public static void main(String[] args) { // 使用匿名子类的方法创建Thread子类对象(也可以创建一个类继承自Thread类 然后重写run方法来实现) Thread thread1 = new Thread() { @Override public void run() { log.debug(原创 2020-07-21 11:31:57 · 281 阅读 · 0 评论 -
Java抽象类和接口的区别详解
抽象类与接口的区别核心区别抽象类不能被实例化、包含一个抽象方法就是抽象类、但是抽象类可以包含具体方法、也可以不不包含抽象方法接口提供绝对抽象,并且不能具有任何方法实现。JDK8中可以在包含方法实现的接口中创建默认和静态方法。子类只能继承自一个抽象类,但可以实现多个接口。Java不支持多继承,通常接口更方便。同时使用接口和抽象类是设计系统的最佳方法不同点抽象类接口构造函数可以有不能有变量任何类型公共静态最终常量方法抽象方法(可以没有)、具体方法pu原创 2020-06-14 20:47:17 · 117 阅读 · 0 评论