前车之鉴 代码安全问题总结教训

       我们有时候在写代码的时候有些疏忽大意,最近在做个网络连接问题出现了 这样一个BUG

问题描述:代码跑到手机上执行第一次连接的时候很顺畅,按照特定的流程进行,当我第二次连接

的时候,有时候会发生卡住一卡卡的情况严重影响游戏里面的主线程

        在此检查代码 连接时候是用的单独的线程去连接,理论上不会影响主线程的运行。

代码结构贴出来

public class A implements Runnable{
	public static int step = 0;
	public A(){}
	public void run(){
		//循环开始
		//------------------------
		//逻辑步骤1
		step = 0;
		//逻辑步骤2
		step = 1;
		//------------------------
	}
}


这里在连接的过程中需要用户来请求 可以连续点击多次,经过上面的代码可以出现描述的问题了

写到这里有经验的同学可能会发现问题,如果没有被困扰的同学可能觉得这没啥问题

有经验的现在也许就知道怎么回事了

在这里会出现线程交互 共用一个step资源 导致两个线程间出现锁定状态

这个可以研究下线程交互 线程死锁问题 这里不一一介绍

上述描述一大堆 总结起来 我们在写代码的时候如果严格要求代码的质量,也许上述问题就会避免 

 public static int step = 0; 改成 private int step 私有的 这样安全咯

你可能感兴趣的:(游戏,网络,Class,手机)