结合多本著作和个人开发经验,整理Java多线程入门手册( 五 )


此线程在可中断的IO操作中被阻塞的对象,阻塞程序的中断方法应该在设置了这个线程中断状态之后被调用
常量 /** * The minimum priority that a thread can have. */public final static int MIN_PRIORITY = 1;/** * The default priority that is assigned to a thread. */public final static int NORM_PRIORITY = 5;/** * The maximum priority that a thread can have. */public final static int MAX_PRIORITY = 10; 常量名
数据类型
作用
MIN_PRIORITY
int
线程最低优先级
NORM_PRIORITY
int
分配给线程的默认优先级
MAX_PRIORITY
int
线程最大优先级
Thread构造方法从源码看出Thread类一共有9个构造方法,除第三个为default修饰【同包可用】,其他都是public

结合多本著作和个人开发经验,整理Java多线程入门手册

文章插图
构造方法
作用
Thread()
分配新的Thread对象
Thread(Runnable target)
传入Runnable接口实现类,之后由JVM启动线程
Thread(Runnable target, AccessControlContext acc)
在传入Runnable的时候还可以指定AccessControlContext
Thread(ThreadGroup group, Runnable target)
指定线程组和Runnable接口
Thread(String name)
指定线程名字,默认是【Thread-下一个线程编号,从0开始】
Thread(ThreadGroup group, String name)
指定线程组和线程名字
Thread(Runnable target, String name)
指定Runnable接口和线程名
Thread(ThreadGroup group, Runnable target, String name)
指定线程组,Runnable接口和线程名
Thread(ThreadGroup group, Runnable target, String name,long stackSize)
指定线程组,Runnable接口,线程名和此线程请求的堆栈大小,默认为0
Thread常用方法 方法
返回值类型
作用
start()
void
启动线程
run()
void
重写的Runnable接口方法,封装线程的功能体
currentThread()
Thread
静态方法,获取当前线程
getName()
String
获取线程名
setName(String name)
void
设置线程名
yield()
void
主动释放当前线程的执行权
join()
void
在线程中插入执行另一个线程,该线程被阻塞,直到插入执行的线程完全执行完毕以后,该线程才继续执行下去
sleep(long millis)
void
线程休眠一段时间
isAlive()
boolean
判断线程是否还存活
isDaemon()
boolean
判断是否为守护线程
stop()
void
过时方法 。当执行此方法时,强制结束当前线程,因过于粗暴,会引发很多问题所以弃用
setDaemon(boolean on)
void
设置为守护线程
getPriority()
int
获取线程优先级
setPriority(int newPriority)
void
设置线程优先级
设置线程名实现类:
 public class RunnableImpl implements Runnable{@Overridepublic void run() {// 输出10以内偶数for (int i = 0; i < 10; i++) {if (i % 2 == 0){// 获取当前线程Thread thread = Thread.currentThread();// 获取线程名String threadName = thread.getName();System.out.println(threadName + "===>" + i);}}}}测试类:
 public class RunnableMain {public static void main(String[] args) {// 1、创建实现类对象RunnableImpl runnable = new RunnableImpl();// 2、 创建线程对象,并指定线程名Thread t1 = new Thread(runnable, "线程1");// 3、启动线程t1.start();System.out.println(Thread.currentThread().getName() + "主线程");}}运行结果:
结合多本著作和个人开发经验,整理Java多线程入门手册

文章插图
或者通过setName()方法设置线程名
 public class RunnableMain {public static void main(String[] args) {// 1、创建实现类对象RunnableImpl runnable = new RunnableImpl();// 2、 创建线程对象,不指定名字Thread t1 = new Thread(runnable);// 设置线程名t1.setName("线程1");// 3、启动线程t1.start();System.out.println(Thread.currentThread().getName() + "主线程");}}如果不设置线程名,默认为【"Thread-" + nextThreadNum()】,nextThreadNum方法使用 threadInitNumber静态变量,默认从0开始,每次+1


推荐阅读