Runnable r1 = new MyRunnable1(); Runnable r2 = new MyRunnable2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2);
时间: 2023-12-03 16:07:27 浏览: 53
这段代码定义了两个实现了Runnable接口的类MyRunnable1和MyRunnable2,并创建了两个线程对象t1和t2,分别用r1和r2作为构造函数的参数。这意味着t1和t2将会在单独的线程中执行MyRunnable1和MyRunnable2中的run方法。这种方式比直接继承Thread类更加灵活,因为一个线程可以运行多个Runnable对象,也可以让多个线程运行同一个Runnable对象。另外,Runnable接口还可以与线程池等高级并发工具一起使用,实现更加复杂的并发控制。
相关问题
public static void main(String[] args) { Runnable r1 = new MyRunnable1(); Runnable r2 = new MyRunnable2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); } } class MyRunnable1 implements Runnable{ public void run(){ for (int i = 0; i < 1000; i++) { System.out.println("你好"); } } } class MyRunnable2 implements Runnable{ public void run(){ for (int i = 0; i < 1000; i++) { System.out.println("再见"); } } }
这是一个Java程序,它创建了两个线程并启动它们,每个线程分别执行一个Runnable对象的run()方法。具体来说,MyRunnable1类和MyRunnable2类都实现了Runnable接口,并覆盖了run()方法。在main()方法中,它们分别被用来创建t1和t2两个线程。当t1和t2线程分别启动后,它们会交替地输出"你好"和"再见",因为它们的任务是分别循环输出这两个字符串。注意,由于线程是异步执行的,因此输出的结果可能不是完全按照顺序交替出现的。
写一个java程序实现Runnable接口,用Thread方法启动线程的方式实现2个线程同时循环输出“线程名-数字”,其中数字从1变化到10.
下面是实现Runnable接口,用Thread方法启动线程的方式实现2个线程同时循环输出“线程名-数字”的Java程序:
```java
public class MyRunnable implements Runnable {
private String name;
private int count;
public MyRunnable(String name) {
this.name = name;
this.count = 1;
}
@Override
public void run() {
while (count <= 10) {
System.out.println(name + "-" + count);
count++;
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable r1 = new MyRunnable("Thread1");
MyRunnable r2 = new MyRunnable("Thread2");
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}
```
在这个程序中,我们定义了一个MyRunnable类,实现了Runnable接口,并重写了run()方法。该方法将在线程启动时被调用,并循环输出“线程名-数字”,其中数字从1到10。然后,我们在Main类中创建了两个MyRunnable对象,分别给它们赋予“Thread1”和“Thread2”作为线程名。接下来,我们创建了两个Thread对象,并将它们与MyRunnable对象关联起来。最后,我们分别启动了这两个线程,它们会同时执行并输出“线程名-数字”。
阅读全文