版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myloveprogrmming/article/details/82871104
2改名
注:无法改变主线程的名字
class ThreadB extends Thread{
public void run(){
System.out.println(getName());
setName("线程A");
System.out.println(getName());
}
}
public class TestB {
public static void main(String[] args) {
ThreadB tb=new ThreadB();
tb.start();
}
}
输出:
Thread-0
线程A
class ThreadB extends Thread{
ThreadB(){
super("线程1");//其父类即Thread的构造方法可以设置名字
}
public void run(){
System.out.println(getName());
}
}
public class TestB {
public static void main(String[] args) {
ThreadB tb=new ThreadB();//构造方法
tb.start();
}
}
输出:
线程1
下面这种方法更好一些:先改名再启动线程
class ThreadB extends Thread{
public void run(){
System.out.println(getName());
}
}
public class TestB {
public static void main(String[] args) {
ThreadB tb=new ThreadB();
tb.setName("线程AAAA");;
tb.start();
}
}
输出:
线程AAAA
3Thread的一个重要的静态方法:Thread.sleep(毫秒数)
package a;
public class TestC {
public static void main(String[] args) throws Exception {
for(int i=1;i<=5;i++)
{
//程序运行到这里会停下指定毫秒数
Thread.sleep(1000);//毫秒,1秒=1000毫秒,该方法会抛出异常(负的毫秒,或者休眠被打断)
System.out.println(i);
}
}
}
输出:
1
2
3
4
5
package a;
class ThreadC extends Thread{
public void run()//run是父类Thread中的方法,父类该方法没有抛出异常,子类也不能抛出异常(坏处要尽量避免),只能try--catch
{
for(int i=1;i<=5;i++)
{
try {
Thread.sleep(1000);
}catch(Exception e) {}
System.out.println(i);
}
}
}
public class TestC {
public static void main(String[] args) throws Exception {
ThreadC tc=new ThreadC();
tc.start();
}
}
输出:
1
2
3
4
5
4.
//匿名内部类
//以下方法用于创建抽象类子类的对象
//或者创建接口的实现类对象
public class TestD {
public static void main(String[] args) {
//方法1
//创建父类的对象在大括号里重写其抽象方法相当于创建了该抽象类的子类的对象
new Thread() {
public void run() {
System.out.println("#####");
}
}.start();
//方法2
//创建接口的对象,在大括号里实现其唯一抽象方法,相当于创建了其实现类的对象
Runnable r=new Runnable() {
public void run() {
System.out.println("!!!!!");
}
};
new Thread(r).start();
//方法3,方法二的简写
new Thread(new Runnable() {
public void run() {
System.out.println("@@@@@");
}
}).start();
//方法4,该方法用于只有一个抽象方法的接口
Runnable haha=()->{System.out.println("我想用这个方法很久了");};
new Thread(haha).start();
}
}
输出:
#####
!!!!!
@@@@@
我想用这个方法很久了
线程一生中的状态图