Java并发--多线程基础

一、start()与run()方法       


    start()方法异步执行,run()同步执行。使用start()时,系统会启动一个新的线程。当使用run()时,系统会在当前线程中执行。不会启动新的线程。    执行start()方法的顺序不代表线程启动的顺序。

    start()方法直接执行线程中的run()方法。


二、isAlive()方法

    isAlive()测试线程是否处于活动状态。活动状态即线程已启动且尚未终止的状态。如果线程处于正在运行或准备开始运行的状态,就认为线程是“存活”的。


三、getStackTrace()与 getAllStackTrace()

    返回一个表示该线程堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该数组中最新的方法调用。最后一个元素代表堆栈底,是该数组中最旧的方法调用。


四、interrupt(),isInterrupted()与interrupted()

    interrupt()中断当前的线程。isInterrupted()实例方法,判定该线程实例是否已中断,检测后,不清楚中断状态。interrupted()静态方法,判定当前线程是否已中断,检测中断后,会清除中断状态。


五、中断线程的方法

    1.使用interrupt()方法中断线程。在主线程中中断新线程,在新线程中检测当前线程是否中断。

    2.在sleep状态下停止线程。先调用interrupt(),在调用sleep(),会出现中断异常,处理此异常实现终止线程。


六、线程的优先级

    1.线程的优先级具有继承性。

    2.高优先级的线程获取的操作系统资源更多,执行的更快。

    3.操作系统分配资源具有随机性,并不是线程的优先级越高,就一定先执行完。


七、守护线程(daemon)

    1.守护线程是一种特殊的线程,当进程中不存在非守护线程(即用户线程),守护线程自动销毁。守护线程的作用是为其他线程的运行提供便利服务,最典型的应用就是GC。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容