![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
zhaowh1993
这个作者很懒,什么都没留下…
展开
-
JAVA多线程的四种实现方式
1.继承Thread 重写run()方法,该run方法表示线程要完成的任务。创建线程对象,调用对象的start()方法来启动线程。2.Runnable接口重写接口中run方法。创建Runable实例类的实例,并依此实例作为Thread的target来创建Thread对象,该线程对象才是真正的线程对象。调用start方法来启动线程3.通过Callable和FutureTask创建...原创 2018-10-22 12:58:40 · 130 阅读 · 0 评论 -
JAVA线程池
为什么要有线程池当线程生存时间较短,且这种线程数量增多的时候,会反复创建销毁线程而增加大量开销。创建线程池ThreadPoolExecutor函数。参数:(摘自LiuZh_) int corePoolSize => 该线程池中核心线程数最大值 核心线程: 线程池新建线程的时候,如果当前线程总数小于corePoolSize,则新建的是核心线程,如果超过cor...翻译 2018-10-22 13:42:07 · 136 阅读 · 0 评论 -
多线程中,一个线程发生异常时
UncaughtExceptionHandler :是未捕获异常而造成的线程突然中断的接口。当线程造成异常时,虚拟机会调用getUncaughtExceptionHandler()来查询UncaughtExceptionHandler 并将线程和异常作为参数传递给uncaughtException()处理。...原创 2018-10-25 16:40:45 · 1511 阅读 · 0 评论 -
JAVA堆和栈
堆用来存放由new创建的对象,在堆中分配的内存和数组,由Java虚拟机GC来管理。栈中存放基本变量类型和对象的引用变量。当代码中定义了一个变量时,java就在栈中为这个变量分配内存,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间。...原创 2018-10-25 17:57:05 · 160 阅读 · 0 评论 -
GC算法
哪些对象可以被回收引用计数算法 根遍历算法如何进行回收标记-清除算法 复制算法 标记-整理算法引用计数算法:对象有一个引用+1,删除一个引用-1。只要计数为0的可以被GC。缺点: 循环引用问题。如A.b = B和B.a=A。再无其他引用。 需要维护一个计数器。 根遍历算法针对引用计算器算法的循环引用问题,出现了根遍历算法。设若干个GC root...原创 2018-10-25 20:27:34 · 345 阅读 · 0 评论 -
GC finalize()方法
finalize()方法是Object中的protected方法,子类可以覆盖该方法以实现对象整理,GC回收之前调用该方法。 通过可达性标记,确定一个对象没有被标记,并不是直接杀死,而进行又一次筛选,如果对象没有覆盖finalize()方法或finalize()方法已经被虚拟机调用过,则虚拟机认为“没有必要执行”。如果这个对象有必要执行finalize()方法,那么将对象放到一个F-Q...原创 2018-10-25 21:00:38 · 280 阅读 · 0 评论 -
wait sleep join yeild
sleepThread类的方法 使当前线程进入停滞状态,需要指定时间。 sleep不会释放锁资源,但会释放cpu。这样,其他线程可以有机会执行。yeild使当前县城重新回到就绪状态,可能立刻又被执行,且低优先级没有机会,同优先级或高优先级有机会执行。 不会释放资源 Thread类的方法waitObject类的方法,必须放在循环体中和同步代码块中, 释放锁,需要被notif...原创 2018-10-25 21:27:55 · 235 阅读 · 0 评论