A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞鸟2022 初级黑马   /  2017-12-4 16:16  /  1557 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有关于多线程问题
因为我的演讲题目是多线程相关的问题,所以说这个题目有可能会容易凑够字数。多线程问题是程序中比较容易出现bug的地方,因为多线程的效率会比较高一点,所以相应的会存在一些安全问题,特别是多个线程共用一个参数的时候,当一个正在执行的时候,系统资源突然被别的线程占用,那么就会出现线程安全问题
例如:
这就是当窗口一正在执行最后一张票的时候,系统资源被窗口二所占用,当线程二执行结束时,而线程一接着执行语句,这时已经跳过了判断语句,所以就出现了卖出了负数张票的问题。
至于多线程的解决方法就是加同步代码块synchronized,非静态同步方法的锁对象是this,静态同步方法锁对象是类的字节码对象,这样能够保证当一个线程在执行未结束的时候,不会被别的线程抢走系统资源,这样就能够解决多线程的安全性问题,但是会牺牲多线程的一部分效率。
还有就是主方法执行是多线程还是单线程的问题,主方法在执行普通的代码时,都是一个方法接着一个方法依次执行,当上面的方法没有执行结束的时候是不会执行下面的方法的。但是启动多线程的时候,主方法在执行多线程语句的时候,并不是像执行普通方法一样在原地等待方法的在执行完毕,而是接着往下执行,和和线程并列执行。例如当在启动线程方法的语句后面加一个普通的输出语句,这个输出语句不会等到线程执行结束才会输出,而是在线程代码在执行的过程中的某个时刻,就把后面的输出语句给执行了。如图:
在执行线程的语句后面,加入输出语句
输出语句在在线程还没有执行结束的时候就已经开始执行了。
关于线程问题说的都是大家都已经听博哥讲过的问题,在这里重新描述一下,希望增加大家的印象。

图片3.png (35.97 KB, 下载次数: 31)

图片3.png

评分

参与人数 1技术分 +3 收起 理由
皖哥哥 + 3 很给力!

查看全部评分

10 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
学以致用
回复 使用道具 举报

给力点赞 666
回复 使用道具 举报
666
回复 使用道具 举报
程序员小虾米 来自手机 初级黑马 2018-3-15 17:52:43
7#
66666666赞
回复 使用道具 举报
赞一个 赞一个 赞一个 赞一个
回复 使用道具 举报
小皖妹妹 来自手机 黑马粉丝团 2018-3-15 18:48:08
9#
回复 使用道具 举报
666
回复 使用道具 举报
666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马