黑马程序员技术交流社区

标题: 我的技术贴(就当吧) [打印本页]

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

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

图片3.png

作者: 奥斯托洛夫斯基    时间: 2017-12-8 16:19

作者: O-limin    时间: 2018-3-15 10:45

作者: 皖哥哥    时间: 2018-3-15 17:46
学以致用
作者: 黑马啸西风    时间: 2018-3-15 17:47

给力点赞 666
作者: 骑着小猪看雪    时间: 2018-3-15 17:51
666
作者: 程序员小虾米    时间: 2018-3-15 17:52
66666666赞
作者: wuwangshan    时间: 2018-3-15 18:22
赞一个 赞一个 赞一个 赞一个
作者: 小皖妹妹    时间: 2018-3-15 18:48

作者: hguilin    时间: 2018-3-15 19:31
666
作者: 美美就是美    时间: 2018-3-16 09:21
666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2