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