预处理线程问题解决方案
现有3个线程thread1, thread2, thread3。这3个线程是并发执行的,当着3个线程都执行完成以后,需要执行一个finish()事件。
实现方法:1/**定义一个静态标记**/2privatestaticbytenbTemp=0;34privatevoidaa(){5//线程16Threadthread1=newThread(newRunnable(){7@Override8publicvoidrun(){9//...10bb();11}12});13//线程214Threadthread2=newThread(newRunnable(){15@Override16publicvoidrun(){17//...18bb();19}20});21//线程322Threadthread3=newThread(newRunnable(){23@Override24publicvoidrun(){25//...26bb();27}28});2930thread1.start();31thread2.start();32thread3.start();33}3435/**注意:要添加关键字“synchronized”,否则会先同时操作bb()方法*/36privatesynchronizedvoidbb(){37nbTemp++;38if(nbTemp==(byte)3){39finish();//条件达成,执行finish();40}41}
我们回到APP上,在APP启动时,我们会先启动Splash,会在Splash中做一些预加载。那么由于网速等等原因,导致预加载的时间不太固定。那么我们既不希望他加载的过快,会导致页面的存在感不强;也不希望加加载过慢,误以为“卡死”。那么我们就需要设置一个最小加载时间和最大加载时间。那么如何时间呢?
nbTemp=0Threadthread1=Thread(Threadthread2=Thread(Threadthread3=Thread(nbTemp++finish();}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。