温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

预处理线程问题解决方案

发布时间:2020-06-11 02:46:04 来源:网络 阅读:590 作者:lzwxx 栏目:开发技术

问题描述:

       现有3个线程thread1, thread2, thread3。这3个线程是并发执行的,当着3个线程都执行完成以后,需要执行一个finish()事件。

 

实现方法:

预处理线程问题解决方案

 1 /** 定义一个静态标记 **/ 2 private static byte nbTemp = 0; 3  4 private void aa(){ 5     // 线程1 6     Thread thread1 = new Thread(new Runnable() { 7         @Override 8         public void run() { 9             // ...10             bb();11         }12     });13     // 线程214     Thread thread2 = new Thread(new Runnable() {15         @Override16         public void run() {17             // ...18             bb();19         }20     });21     // 线程322     Thread thread3 = new Thread(new Runnable() {23         @Override24         public void run() {25             // ...26             bb();27         }28     });29 30     thread1.start();31     thread2.start();32     thread3.start();33 }34 35 /** 注意:要添加关键字“synchronized”,否则会先同时操作bb()方法 */36 private synchronized void bb(){37     nbTemp ++;38     if(nbTemp == (byte)3) {39         finish(); // 条件达成,执行finish();40     }41 }

预处理线程问题解决方案

 

我们回到APP上,在APP启动时,我们会先启动Splash,会在Splash中做一些预加载。那么由于网速等等原因,导致预加载的时间不太固定。那么我们既不希望他加载的过快,会导致页面的存在感不强;也不希望加加载过慢,误以为“卡死”。那么我们就需要设置一个最小加载时间和最大加载时间。那么如何时间呢?

预处理线程问题解决方案

     nbTemp = 0                       Thread thread1 =  Thread(                                     Thread thread2 =  Thread(                                     Thread thread3 =  Thread(                                                                                                                                                                                                                       nbTemp ++                                                                     finish();   }


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI