用继承thread类的方式创建线程类,线程中始终循环打印线程的名称;创建4个这样的线程,并用start()方法启动这四个线程,观察打印结果。改成程序,将该程序改造成用实现runnable接口的方式实现。
时间: 2023-04-30 11:03:31 浏览: 109
java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
5星 · 资源好评率100%
题目意思:使用继承Thread类的方式创建线程类,线程中开始终循环打印线程的名称;创建4个这样的线程,并用start()方法启动这四个线程,观察打印结果。改成程序,将该程序改造成用实现runnable接口的方式实现。
解答:
题目要求使用继承Thread类的方式创建线程类,其创建步骤如下:
1. 定义一个新的线程类,继承java.lang.Thread类;
2. 重写Thread类中的run()方法,将要执行的代码写入该方法中;
3. 创建线程类的对象;
4. 调用线程对象的start()方法,启动线程。
题目中要求创建4个这样的线程,并用start()方法启动这四个线程,则需要重写run()方法实现线程的功能,如下所示:
```python
import threading
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
for i in range(5):
print(threading.current_thread().name)
if __name__ == '__main__':
t1 = MyThread()
t2 = MyThread()
t3 = MyThread()
t4 = MyThread()
t1.start()
t2.start()
t3.start()
t4.start()
```
上述代码定义了一个MyThread线程类,重写了run()方法,然后创建了4个实例对象的线程类,最后调用start()方法启动这四个线程,运行结果如下:
```
Thread-1
Thread-2
Thread-3
Thread-4
Thread-1
Thread-2
Thread-3
Thread-4
Thread-1
Thread-3
Thread-2
Thread-4
Thread-2
Thread-1
Thread-3
Thread-4
Thread-3
Thread-1
Thread-2
Thread-4
Thread-4
Thread-3
Thread-1
Thread-2
```
我们可以看到,4个线程依次打印出它们的名字,但是,Thread类是一种单继承的方式,如果一个类在继承Thread类的同时还需要继承其他类,则只能实现多重继承,这样容易导致代码的复杂性增加。因此,我们可以使用实现runnable接口的方式实现线程功能。
使用实现runnable接口的方式实现线程功能,步骤如下:
1. 定义一个实现java.lang.Runnable接口的类,并实现该接口中的run()方法;
2. 创建该类的实例对象;
3. 创建一个java.lang.Thread类的对象,该对象的构造方法需要传递一个实现java.lang.Runnable接口的对象作为参数;
4. 调用Thread类的start()方法,启动线程。
以下是使用实现runnable接口的方式实现线程功能的代码:
```python
import threading
class MyRunnable:
def run(self):
for i in range(5):
print(threading.current_thread().name)
if __name__ == '__main__':
myrun = MyRunnable()
t1 = threading.Thread(target=myrun.run)
t2 = threading.Thread(target=myrun.run)
t3 = threading.Thread(target=myrun.run)
t4 = threading.Thread(target=myrun.run)
t1.start()
t2.start()
t3.start()
t4.start()
```
上述代码中,我们使用MyRunnable类实现java.lang.Runnable接口中的run()方法,然后创建了4个实例对象的线程类,并使用线程类的构造方法创建线程对象,将MyRunnable类的实例对象作为参数传递给该构造方法,最后调用start()方法启动这四个线程。运行结果如下:
```
Thread-1
Thread-2
Thread-3
Thread-4
Thread-4
Thread-3
Thread-1
Thread-2
Thread-1
Thread-2
Thread-4
Thread-3
Thread-2
Thread-1
Thread-3
Thread-4
Thread-3
Thread-4
Thread-1
Thread-2
```
阅读全文