美文网首页
JAVA基础-线程

JAVA基础-线程

作者: LovvJe | 来源:发表于2020-04-25 15:23 被阅读0次

    介绍

    进程是系统分配资源的最小单元,线程是操作系统中进行实际执行操作的。JAVA是默认支持多线程方式的。在JAVA中有两种方式启动线程,Thread类和Runnable接口(There are two ways to create a new thread of execution.这段描述在Thread源码中有)。

    为什么会提供两种启动线程的方式,两者的区别是什么?

    1.Thread是一个类,Runnable是一个接口

    2.Thread类是继承关系,一个类只能继承一个父类,而使用Runnable还可以实现其他接口

    3.Thread类实现了Runnable接口,并提供了多种对线程进行操作的方法

    4.Thread类提供了线程的完整操作功能,而Runnable更像是专注于执行一个任务

    根据源码中注释的描述大致可以理解为,如果你只想单纯的启动一个线程,重写run方法,而不去进行其他的线程操作(挂起、优先级、守护线程等),那么你可以选择使用Runnable接口。

    Thread类需要了解的几个方法

    public final void join();这个方法可以保证线程的顺序执行

    public final void setDaemon(boolean on);设置守护线程(主线程结束后,守护线程会跟着结束),缺省值为false

    public void interrupt();把中止标志位置1

    public static boolean interrupted();判断线程是否被中止,判断完成之后会清除标志位

    public boolean isInterrupted();判断线程是否被中止,判断完成之后不会清除标志位

    public synchronized void start();启动线程,重复执行会报IllegalThreadStateException

    public static native void yield();这个方法用的比较少,向处理器表示愿意做出让步,把处理时间腾给其他线程,但处理器未必响应

    public static native void sleep(long millis);休眠

    public final void suspend();挂起

    知识点

    1.JAVA线程是协作式的

    2.JAVA默认是多线程的,最起码有两个,一个main一个gc。

    3.finalize方法不一定会被执行,因为finalize是守护线程Finalizer去调用的,当主线程结束,Finalizer就会结束,可能来不及调用finalize方法去释放资源

    相关文章

      网友评论

          本文标题:JAVA基础-线程

          本文链接:https://www.haomeiwen.com/subject/snzhwhtx.html