Thread的
从0开始
测试类中定义定义名称
MyThread myThread=new MyThread();myThread.setName("子线1==");myThread.start();
实体类中用
get()
方法获得名字
package com.itjh.pojo;public class MyThread extends Thread{@Overridepublic 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
(优先级越高,抢夺到执行的机会越大);后一个为现在是哪个对象正在执行它
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);}@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(currentThread());try{Thread.sleep(1000);}catch (Exception e){}System.out.println(getName()+"。。子线程==。。。");}}}