📜  操作系统-多线程(1)

📅  最后修改于: 2023-12-03 14:54:46.338000             🧑  作者: Mango

操作系统-多线程

什么是多线程?

多线程是指在操作系统中同时运行多个线程的技术,每个线程可以同时完成不同的任务。

为什么需要多线程?

在单线程模式下,程序需要等待前面的任务执行完才能执行后面的任务,而且还会出现死锁等问题。而多线程可以让程序同时执行多个任务,提高了程序的效率和性能。

多线程的实现方式
线程和进程的区别

在操作系统中,进程是系统分配资源的基本单位,每个进程都有独立的内存空间,而线程是进程中的执行单元,每个进程可以包含多个线程,这些线程可以共享进程的内存空间。

多线程的优缺点

多线程的优点:

  • 提高了程序的并发性,同时执行多个任务,提高了程序的效率和性能。
  • 可以充分利用多核CPU的优势。

多线程的缺点:

  • 复杂度较高,需要考虑线程同步、死锁等问题。
  • 线程数量过多会占用太多系统资源,导致系统变慢。
多线程的实现方式

实现多线程有三种方式:

1. 继承Thread类

通过继承Thread类,并重写run()方法来实现多线程。

import threading 

class MyThread(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self.num = num

    def run(self):
        for i in range(self.num):
            print("This is Thread:", threading.currentThread().getName(),"num:", i)

2. 实现Runnable接口

通过实现Runnable接口,并实现run()方法来实现多线程。

import threading

class MyRunnable:
    def __init__(self, num):
        self.num = num

    def run(self):
        for i in range(self.num):
            print("This is Thread:", threading.currentThread().getName(),"num:", i)

def main():
    myRunnable = MyRunnable(5)
    thread1 = threading.Thread(target=myRunnable.run, args=())
    thread1.start()

if __name__ == "__main__":
    main()

3. 使用线程池

使用线程池来管理线程,并实现多线程。

import concurrent.futures

def myfunc(num):
    for i in range(num):
        print("This is Thread:", threading.currentThread().getName(),"num:", i)

def main():
    with concurrent.futures.ThreadPoolExecutor() as executor:
        future1 = executor.submit(myfunc, 5)
        future2 = executor.submit(myfunc, 10)

if __name__ == "__main__":
    main()
多线程的应用场景

多线程广泛应用于需要实时响应的系统,如网络通信、数据库连接、Web服务器等。

小结

多线程是提高程序并发性和性能的重要技术,但要注意线程同步、死锁等问题。实现多线程有多种方式,可以选择适合自己的方式来实现。多线程应用广泛,适用于需要实时响应的系统。