Java线程

线程创建

1,实现Runnable接口,实现其中run()方法,由Runnable创建一个Thread对象。

2,可以构建一个Thread类的子类定义一个线程,并调用start方法。本方法不推荐使用,如果有很多任务,要为每一个任务创建一个独立的线程所付出的代价是很大的。

线程状态

线程的6中状态:New(新建),Runnable(可运行),Blocked(被阻塞),Waiting(等待),Timed waiting (记时等待),Terminated(被终止)


线程状态

线程属性

 每个线程都有一个优先级,默认情况下,一个线程继承它的父线程的优先级,可以用setPriority方法提高或者降低一个线程的优先级。线程优先级在MIN_PRIORITY和MAX_PRIORITY之间,即(1-10)。

未捕获异常处理器

线程的run方法不能被抛出任何被检测的异常,但是不被检测的异常会导致线程终止,在这种情况下,线程就死亡了。不需要 try catch 处理,但是必须实现一个Thread.UncaughtExceptionHandler接口的类。也可以用 Thread类的静态方法setDefaultUncaughtExceptionHandler为线程安装默认的处理器

线程阻塞状态的情况:

1,线程调用sleep方法主动放弃所占用的处理器资源。

2,调用了一个阻塞式IO方法。方法返回前,线程被阻塞

3,在试图获得同步监视器的时候,该监视器被其他的线程所持有。

4,线程在等待某个通知(notify)

5,调用了suspend方法将该线程挂起。(resume可恢复)


Join线程

当某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被Join方法加入到join线程完成为止。

Daemon Thread(守护进程)

调用Thread对象的setDaemon(true)方法可将指定线程设置成后台进程。当前台进程死亡时,后台进程也随之死亡。虚拟机中只剩下后台进程,程序也就没有运行的必要了,虚拟机就退出了。

(```)

  代码...

  代码...

  代码...

(```)

(```)

public class DaemonThread extends Thread {

    public void run(){

        for(int i=0;i<1000;i++){

            System.out.println(getName()+""+i);

}

}

    public static void main(String[] args) throws Exception {

        DaemonThread dt= new DaemonThread();

        //设置守护进程

        dt.setDaemon(true);

        dt.start();

        for(int i= 0;i<100;i++){

            System.out.println(Thread.currentThread().getName()+""+i);

}

}

}

(```)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【JAVA 线程】 线程 进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者...
    Rtia阅读 2,806评论 2 20
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,189评论 0 23
  • 下面是我自己收集整理的Java线程相关的面试题,可以用它来好好准备面试。 参考文档:-《Java核心技术 卷一》-...
    阿呆变Geek阅读 14,987评论 14 507
  • 坐在视频会议室聆听上级单位召开的全市会议,会议开场就是表彰优秀,随着会场里的《运动员进行曲》传来,作为一名依然年...
    缘溪行者阅读 1,784评论 2 0
  • 一、概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodo...
    jimmy_Hu阅读 917评论 0 2