Thread构造方法详解

1,构造方法总览

public Thread();
public Thread(Runnable target);
public Thread(String name);
public Thread(Runnable target, String name); // 最常用
public Thread(ThreadGroup group, Runnable target);
public Thread(ThreadGroup group, String name);
public Thread(ThreadGroup group, Runnable target, String name);
public Thread(ThreadGroup group, Runnable target, String name,  long stackSize);
  • Runnable target:实现 Runnable 的实现类或继承了 Thread 的子类(Thread 也实现了 Runnable 接口)
  • String name:线程的名字
  • ThreadGroup group:当前建立的线程所属的 线程组
  • long stackSize:线程栈的大小,此处只做粗略解释,因跟 JVM 有关系

2,详解

注:所有构造函数底层都调用了 init 方法,进行初始化,也可以说,Thread 只有一个构造函数,关于 init 后续会细讲

public Thread() {
	init(null, null, "Thread-" + nextThreadNum(), 0);
}
/*
 * 第一个参数为 ThreadGroup
 * 第二个参数为 Runnable
 * 第三个参数为 name
 * 第四个参数为 stackSize
 */

ThreadGroup :当此参数为 null 时,会将此线程设置到父线程的 ThreadGroup 里面。

Thread parent = currentThread(); // 获取到父线程的 ThreadGroup

// 将此线程设置到父线程的 ThreadGroup
if (g == null) {
	g = parent.getThreadGroup();
}

Runnable:当此参数为 null 时,此线程什么都不做

@Override
public void run() {
if (target != null) {
  target.run();
}
}
// 要让线程拥有任务并执行,1:通过构造器传入 Runnable 实例,2:重写 run 方法

name:当此参数为 null 时,那么会拥有一个默认的名字,命名方式为 Thread-从0递增的数字

init(null, null, "Thread-" + nextThreadNum(), 0);

/* For autonumbering anonymous threads. */
private static int threadInitNumber;
private static synchronized int nextThreadNum() {
	return threadInitNumber++;
}

stackSize:此参数如果为空,默认值为0,表示忽略该参数 --> stackSize 参数的作用具有高度的平台依赖性,某些平台这个值都可能被忽略

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值