为什么名字无法显示?
来源: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回答
同学你好,是显示了名字的,Thread.currentThread().getName()获取的是线程的名字,代码运行结果如下:

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

另外上述实现方式运行结果虽与效果图一致,但与题目要求有一些不符:
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");
}
}
}祝学习愉快~
相似问题