为什么名字无法显示?

来源:2-8 自由编程

帅7东东

2021-08-31 04:59:12

相关代码:

​package com.imooc.thread;
class PrintRunnable implements Runnable{
public PrintRunnable(String name) {
super();
}
@Override
public void run() {
for(int i=1;i<=3;i++) {
System.out.println(Thread.currentThread().getName());
}

}

}
public class PrintRunnableTest {

public static void main(String[] args) {
PrintRunnable pr1=new PrintRunnable("A dog");
Thread t1=new Thread(pr1);
t1.start();
PrintRunnable pr2=new PrintRunnable("A cat");
Thread t2=new Thread(pr2);
t2.start();
for(int a=1;a<=3;a++) {
System.out.println("main thread");
}
}

}


写回答

1回答

好帮手慕小小

2021-08-31

同学你好,是显示了名字的,Thread.currentThread().getName()获取的是线程的名字,代码运行结果如下:

http://img.mukewang.com/climg/612d9c4c09e0a43c01200200.jpg

若想显示Cat、Dog,可在PrintRunnable类中新增name属性,在构造方法中为其赋值,并在的run方法的循环中输出,参考代码如下:

http://img.mukewang.com/climg/612d9c20093188f806790246.jpg

另外上述实现方式运行结果虽与效果图一致,但与题目要求有一些不符:

1、通过实现Runnable接口的方式创建线程类Cat和Dog,run()方法实现的功能为:加入一个循环长度为3的for循环,分别循环输出信息“A cat”和“A dog”。

Cat类如下:

public class Cat implements Runnable{
    @Override
    public void run() {
        for (int i=0;i<3;i++) {
        System.out.println(Thread.currentThread().getName()+"A cat");
            }
    }
}

Dog类如下:

public class Dog implements Runnable {
    @Override
    public void run() {
        for (int i=0;i<3;i++) {
            System.out.println(Thread.currentThread().getName()+"A dog");
        }
    }
}

2、在测试类中分别创建Cat和Dog类的对象,启动两个线程。并在测试类中创建一个循环长度为3的for循环,打印输出信息“main thread”。代码实现如下:

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        Thread t1 = new Thread(cat);
        t1.start();
        Dog dog = new Dog();
        Thread t2 = new Thread(dog);
        t2.start();
        for (int i=0;i<3;i++) {
            System.out.println("main thread");
        }
    }
}

祝学习愉快~

0

0 学习 · 9886 问题

查看课程