使用Thread类创建子类的方式创建多线程。
时间: 2023-05-15 07:06:30 浏览: 59
可以使用以下方式创建多线程:
class MyThread extends Thread {
public void run() {
// 线程执行的代码
}
}
然后在主线程中创建并启动多个 MyThread 实例即可。
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
相关问题
多线程练习1:使用继承Thread类的方式创建线程
好的,让我们来写一个简单的多线程练习吧。下面是一个使用继承 `Thread` 类的方式来创建线程的示例代码。
```python
import threading
import time
class MyThread(threading.Thread):
def __init__(self, thread_name, delay):
threading.Thread.__init__(self)
self.thread_name = thread_name
self.delay = delay
def run(self):
print('线程 %s 开始执行' % self.thread_name)
for i in range(5):
print('%s: %d' % (self.thread_name, i))
time.sleep(self.delay)
print('线程 %s 执行完毕' % self.thread_name)
if __name__ == '__main__':
t1 = MyThread('线程1', 0.5)
t2 = MyThread('线程2', 1)
t1.start()
t2.start()
t1.join()
t2.join()
print('程序执行完毕')
```
在上面的代码中,我们定义了一个名为 `MyThread` 的类,继承了 `threading.Thread` 类,并重写了 `run` 方法。
在 `__init__` 方法中,我们传递了 `thread_name`(线程的名称)和 `delay`(每次执行循环的延迟时间)两个参数,并在子类中使用 `self` 分别赋值给了实例变量 `self.thread_name` 和 `self.delay`。
在 `run` 方法中,我们使用 `for` 循环执行了 5 次打印输出,并在每次循环之后通过 `sleep` 方法让线程休眠一段时间。
在主函数中,我们实例化了两个线程对象 `t1` 和 `t2`,并分别启动它们的线程。最后调用 `join` 方法等待线程执行完毕,并在主线程中输出一条提示信息表示程序已经执行完毕。
当您运行上述代码时,您将看到如下输出结果:
```python
线程 线程1 开始执行
线程 线程2 开始执行
线程1: 0
线程2: 0
线程1: 1
线程2: 1
线程1: 2
线程1: 3
线程2: 2
线程1: 4
线程2: 3
线程2: 4
线程 线程1 执行完毕
线程 线程2 执行完毕
程序执行完毕
```
可以看出,两个线程同时执行,每个线程都按照指定的延迟时间循环执行了 5 次,并最终执行完毕。
java定义Thread类的子类实现一个多线程程序
以下是一个简单的多线程程序,其中定义了一个 Thread 类的子类 MyThread,用于实现多线程:
```
public class MyThread extends Thread {
public void run() {
for(int i=1; i<=10; i++) {
System.out.println("Thread " + Thread.currentThread().getId() + " is running: " + i);
try {
Thread.sleep(1000); // 暂停1秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
}
}
```
在上面的示例中,MyThread 类继承了 Thread 类,并重写了 run() 方法。在 run() 方法中,我们可以编写需要执行的代码。在主类 Main 中,我们创建了两个 MyThread 的实例,并调用 start() 方法启动这两个线程。在启动线程后,run() 方法中的代码将会被并发执行。