多线程案例

以下是一个简单的多线程案例,实现了一个简单的计数器程序。该程序会同时启动两个线程,每个线程都会对计数器进行加一操作,并输出当前计数器的值。

python 复制代码
import threading

# 定义一个全局变量作为计数器
counter = 0

# 定义一个线程锁,用于对计数器进行互斥操作
lock = threading.Lock()

# 定义一个线程函数,每次将计数器加1,并输出当前计数器的值
def increment():
    global counter
    with lock:
        counter += 1
    print("Current counter value: {}".format(counter))

# 创建两个线程
t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=increment)

# 启动线程
t1.start()
t2.start()

# 等待线程执行完毕
t1.join()
t2.join()

当程序运行时,输出如下:

复制代码
Current counter value: 1
Current counter value: 2

可以看到,两个线程同时对计数器进行加一操作,并输出了当前计数器的值。由于使用了线程锁,保证了计数器的操作互斥,避免了数据竞争的问题。

相关推荐
咖啡八杯14 小时前
GoF设计模式——抽象工厂模式
java·后端·spring·设计模式·抽象工厂模式
Thanks_ks14 小时前
分布式锁:Redis 与 Redisson 的工程实践与避坑指南
java·redis·分布式锁·redisson·微服务架构·并发编程·高可用
xyq202414 小时前
Lua 模块与包
开发语言
掉鱼的猫14 小时前
agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决
java·openai
江汉似年14 小时前
强化学习中的 On-policy 与 Off-policy 全面解析
人工智能·深度学习·算法·rl
RainCity14 小时前
Java Swing 自定义组件库分享(四)
java·笔记·后端
小短腿的代码世界14 小时前
打印不止是QPrinter:深入Qt Print Support框架的内核设计与跨平台输出管道
开发语言·qt
性野喜悲14 小时前
python将excel中的链接转成图片并替换链接展示在excel中【将pdf的第一页插入excel并将对应信息获取到插入签名等位置】
开发语言·python·excel
诙_14 小时前
C++代码实践应用
开发语言·c++
谙弆悕博士14 小时前
【附C语言源码】从零实现命令行贪吃蛇游戏
c语言·开发语言·学习·游戏·游戏程序·小游戏·贪吃蛇