[Java] 多线程

例1:单线程

Punishment.java

Student.java

StudentClient.java

main线程-小明抄写internationalization。还要抄写99次

...
main线程-小明抄写internationalization。还要抄写0次
main线程-小明一共抄写了100次!

例2:继承Thread实现独立线程

与例1不同处:

  • 继承Thread类
  • 调用Thread构造方法,设置threadName
  • 重写run方法,调用copyWord完成任务
  • 在main()中调用 start 方法

Student.java

StudentClient.java

Another thread will finish the punishment。 main thread is finished
小明线程-小明抄写internationalization。还要抄写99次

...

小明线程-小明抄写internationalization。还要抄写0次
小明线程-小明一共抄写了100次!

例2:继承Thread实现多线程

StudentClient.java

小明线程-小明一共抄写了100次!

小张线程-小张一共抄写了100次!

小赵线程-小赵一共抄写了100次!

例3:继承Runnable实现多线程

Student.java

StudentClient.java

结果同例2

例4:多线程同时抄写

  • 取得剩余次数后马上更新-1后的次数。看似是避免了读取和更新间的时间间隔
  • 更新剩余次数前先判断自己的更新次数是否为最新,避免更新后次数反而变大的问题
  • 有小概率两人甚至三人同时查看剩余次数,导致重复抄写

Student.java

StudentClient.java

小赵线程-小赵一共抄写了34次!
小张线程-小张一共抄写了22次!
小明线程-小明一共抄写了44次!

例5:解决线程安全问题

参考

java多线程是并发还是并行

https://blog.csdn.net/gxl1989225/article/details/84912017

posted @   cxc1357  阅读(43)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)
点击右上角即可分享
微信分享提示