你不知道的Thread

1.创建Thread,默认有一个线程名,以Thread-开头,threadInitNumber从0开始计数。有线程名时,threadInitNumber不自增。

构造函数Thread()

2.如果在构造Thread的时候没有传递Runnbale或者没有复写Thread的run方法,该Thread不会调用任何方法(普通实例),如果传递了Runnable接口的实例,或者复写了Thread的run方法,则执行该方法的逻辑代码。

3.如果构造线程对象时,没有传入ThaeadGroup,Thead会默认获取父线程的ThaeadGroup作为该线程的ThaeadGroup,此时子线程和父线程会在同一个ThaeadGroup中。它将会和父线程拥有同样的优先级,同样的daemon。

Thread() 
分配一个新的 Thread对象。  
Thread(Runnable target) 
分配一个新的 Thread对象。  
Thread(Runnable target, String name) 
分配一个新的 Thread对象。  
Thread(String name) 
分配一个新的 Thread对象。  
Thread(ThreadGroup group, Runnable target) 
分配一个新的 Thread对象。  
Thread(ThreadGroup group, Runnable target, String name) 
分配一个新的 Thread对象,使其具有 target作为其运行对象,具有指定的 name作为其名称,属于 group引用的线程组。  
Thread(ThreadGroup group, Runnable target, String name, long stackSize) 
分配一个新的 Thread对象,以便它具有 target作为其运行对象,将指定的 name正如其名,以及属于该线程组由称作 group ,并具有指定的 堆栈大小 。  
Thread(ThreadGroup group, String name) 
分配一个新的 Thread对象。  

4.一个线程的创建肯定是由另一个线程完成的 ;被创建线程的父线程是创建它的线程;main函数所在的线程是由JVM创建的,也就是main线程,那就意味着我们前面创建的所有线程,其父线程都是main线程。

5.Thread和Runnable的关系:Thread负责线程本身的职责和控制,而runnable负责逻辑执行单元的部分。

6.在Thread的构造函数中,可发现有一个特殊的参数,stackSize,这个参数的作用是什么呢?

一般情况下,创建线程的时候不会手动指定栈内存的地址空间字节数组,统一通过xss参数进行设置即可,一般来说stacksize越大,代表正在线程内方法调用递归的深度就越深,stacksize越小代表着创建的线程数量越多,当然这个参数对平台的依赖性比较高,比如不同的操作系统,不同的硬件。默认是0,0代表会忽略该参数,该参数被JNI调哟用。 

在有些平台下,越高的stack设定,可以允许的递归深度就越多;反之,越少的stack设定,递归深度越浅。

注意:该参数在一些平台有效,一些无效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值