看看就好除了Thread.currentThread()和sleep()方法,其他的都用不上
public static void main(String[] args) {
Thread t1 = new MyThread();
t1.setName("1号线程");//对线程进行改名
t1.start();
Thread t2 = new MyThread();
t2.setName("2号线程");
t2.start();
Thread t = Thread.currentThread(); // Thread.currentThread();这个方法表示那个线程执行它就获取那个线程对象
t.setName("主线程");//因为是主线程执行的Thread.currentThread();方法所以被改名的也是主线程
System.out.println(t.getName() + "执行");
//线程的默认名为 Thread-索引(索引根据创建线程对象的先后顺序) 主线程的默认名为main
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "执行");
}
}
对线程改名字还可以使用构造器,对主线程取名还得用上面老方法
public class FileDemo {
public static void main(String[] args) {
Thread t1 = new MyThread("1号线程");
t1.start();
Thread t2 = new MyThread("2号线程");
t2.start();
Thread t = Thread.currentThread(); // Thread.currentThread();这个方法表示那个线程执行它就获取那个线程对象
t.setName("主线程");//因为是主线程执行的Thread.currentThread();方法所以被改名的也是主线程
System.out.println(t.getName() + "执行");
//线程的默认名为 Thread-索引(索引根据创建线程对象的先后顺序) 主线程的默认名为main
}
}
class MyThread extends Thread {
public MyThread() {//提供无参构造器显得专业一点
}
public MyThread(String name) {
super(name);//通过super把name穿给父类对象
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "执行");
}
}
线程休眠
public class FileDemo {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("输出" + i);
if(i == 3){
try {
//作用:
//产品经理让我加上这行代码,如果用户愿意给钱,我就注释掉
Thread.sleep(3000);//这是Thread的方法,因为main是本身就是线程就没有在创建线程对象
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}