方法
Thread的
获得线程名
- 系统默认方法名:
从0开始
- 用set方法设置线程名,再用get()方法获得线程名
测试类中定义定义名称
MyThread myThread=new MyThread();
myThread.setName("子线1==");
myThread.start();
实体类中用
get()
方法获得名字
package com.itjh.pojo;
public class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println(getName()+"。。。子线程。。。。。"+i);
}
}
}
- 用
currentThread()
:获得当前线程对象 - 系统给现成的优先级默认为
5
,看下面第二个结果是
public class TestMyT2 {
public static void main(String[] args) {
MyTread2 myTread2=new MyTread2();
myTread2.start();
System.out.println(myTread2.currentThread());
}
}
结果是:Thread[main,5,main]
,解释看下面测试类的解释
或者实体类中也可以写,和上面没有一定得打配合
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println(currentThread());
System.out.println(getName()+"。。子线程==。。。");
}
}
结果是:
Thread[Thread-0,5,main]
:[]中的前一个意为子线程的对象(可以在子线程所在的类里面重写一个含参构造函数,这样就可以在测试类创建Thread对象时传入你想要起的名字了);中间的是当前线程的优先级,默认为5
(优先级越高,抢夺到执行的机会越大);后一个为现在是哪个对象正在执行它
- 构造函数命名:在实体类中重写一个构造函数,因为父类才有这个构造函数,所以得借助super():
public MyTread2(String name){
super(name);
}
然后测试类创建对象就可以直接传参了,记得加一个currentThread()
方法获得线程名
package com.itjh.Test;
import com.itjh.pojo.MyTread2;
public class TestMyT2 {
public static void main(String[] args) {
MyTread2 myTread2=new MyTread2("小飞机");
myTread2.start();
System.out.println(myTread2.currentThread());
}
}
结果(部分):
Thread[小飞机,5,main]
小飞机。。子线程==。。。
Thread[小飞机,5,main]
小飞机。。子线程==。。。
暂停线程
Sleep()
方法属于Tread类的方法:测试类中的调用子线程时,哪一条线程执行到这个方法就休眠指定的时间:1000=1秒=1000毫秒,记得用try() catch()
包起来,因为Tread类中没有抛出异常,作为他的子类自然也没有
package com.itjh.pojo;
public class MyTread2 extends Thread {
public MyTread2(){}
public MyTread2(String name){
super(name);
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(currentThread());
try{
Thread.sleep(1000);
}catch (Exception e){
}
System.out.println(getName()+"。。子线程==。。。");
}
}
}