Java线程知识点

1.Java平台对线程的实现:java.lang.Thread。
创建线程的方式:继承Thread,或实现Runnable接口
2.Thread类的start方法的作用是启动相应的线程,但线程具体何时能够执行是由线程调度器(Scheduler)决定的。
3.start方法只能被调用一次,多次调用同一个Thread实例的start方法,会导致抛出IllegalThreadStateException异常。
4.创建一个线程和创建其它类型的Java对象所不同的是,Java虚拟机会为每一个线程分配调用栈,所需的内存空间。
5.线程的属性:包括线程的编号,名称,线程类别和优先级。
名称:用于区分不同的线程。
使用Thread.currentThread().getName(),得到当前当前线程名称。

Thread.currentThread().getName()
//输出得到
Thread-0

线程类别(Daemon):类型boolean,值为true表示相应的线程为守护线程,否则表示为用户线程。该属性必须在相应线程启动之前设置。即对setDaemon方法的调用必须在start方法的调用之前,否则会抛出IllegalThreadStateException异常。
优先级(Priority):类型int,是给线程调度器的提示,表示哪个线程可以优先运行。Java定义了1~10的10个优先级。但并不能保证线程按照其设置的优先级高低的顺序运行。
6.用户线程会阻止Java虚拟机的正常停止,即一个Java虚拟机只有在其所有用户线程都运行结束(Thread.run()调用未结束)的情况下才能正常停止。
如果虚拟机被强制停止,那么用户线程也无法阻止Java虚拟机的停止。

7.Java中,一个线程是否是一个守护线程默认取决于其父线程:父线程是守护线程,则子线程也是守护线程;父线程是用户线程,则子线程也是用户线程。
父线程在创建子线程后,启动子线程之前可以调用该线程的setDaemon方法,将相应的线程设置为守护线程。
8.多线程编程的实质就是将任务的处理方式由串行改为并发。

你可能感兴趣的:(Java)