线程基础知识

线程调度方式:

  • 分时调度

平均分配每个线程占用 CPU 的时间。

  • 抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个线程执行,Java使用的为抢占式调度。

多线程的内存解析:

多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间;

线程的栈内存是运行start()方法时创建的(备注:每执行一次start()方法都会创建一个栈空间),并且栈内存都是线程私有的;

当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了。

图解:

Runnable、Callable接口的方式创建线程区别:

Callble:能有返回值,能抛出异常;

使用接口Runnable 、Callable 实现接口的好处:

线程子类实现了 Runnable 或 Callable接口,还可以继承其他类;
更加的符合面向对象编程思想,线程对象线程任务分离、实现解耦;

继承 Thread 类实现线程解析:

优点:
编码相对于实现接口简单一些;

缺点:
线程类已经继承了Thread类,所以不能再继承其他父类;
继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,又有线程任务。

线程生命周期图:

 

posted @ 2019-10-13 20:55  唐胜伟  阅读(143)  评论(0编辑  收藏  举报