在本节将会介绍多线程的创建方式、线程之间共享全局变量、同步问题、加锁、死锁,最后使用多线程实现一个udp聊天工具。
1、创建线程
python可以直接使用threading模块进行线程创建,并指定该线程执行哪个方法。如下所示,同时使用threading.enumerate()方法可以查看当前正在运行的线程有哪些,python与java不同,python中的主线程在其他线程都destory后才会destory,而java有可能主线程已经destory了,而其他线程还在继续运行。
# 创建线程
import threading
from time import sleep
def method1():
sleep(3)
length = len(threading.enumerate())
print("当前运行的线程数量为:%d" % length)
print(threading.enumerate())
def main():
length = len(threading.enumerate())
print("当前运行的线程数量为:%d" % length)
print(threading.enumerate())
t = threading.Thread(target=method1)
t.start()
# 查看当前线程的数量
# python的主线程会在其他线程结束之后再结束
if __name__ == "__main__":
main()
运行结果
当前运行的线程数量为:1
[<_MainThread(MainThread, started 6460)>]
当前运行的线程数量为:2
[<_MainThread(MainThread, stopped 6460)>, <Thread(Thread-1, started 11888)>]
在java中的演示
package thread;
class MyThread implements Runnable
{
@Override
public void run()
{
for (int i = 0; i < 5; i++)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println("=======================================");
ThreadTest1.getAllThread();
}
}
public class ThreadTest1
{