当前位置: 首页 > news >正文

网站建设 猴王网络0成本免费推广网址大全

网站建设 猴王网络0成本,免费推广网址大全,企业网站建设机构,查网站线程的几种创建方式 new Thread#xff1a;可复写Thread#run方法。也可以传递Runnable对象#xff0c;更加灵活。缺点#xff1a;缺乏统一管理#xff0c;可能无限制新建线程#xff0c;相互之间竞争#xff0c;及可能占用过多系统的资源导致死机或oom。 new Thread(new…线程的几种创建方式 new Thread可复写Thread#run方法。也可以传递Runnable对象更加灵活。缺点缺乏统一管理可能无限制新建线程相互之间竞争及可能占用过多系统的资源导致死机或oom。 new Thread(new Runnable() {Overridepublic void run() {}}).start();class MyThread extends Thread{Overridepublic void run() {super.run();}}new MyThread().start();AsyncTask轻量级的异步任务工具类提供任务执行的进度回调给UI线程场景需要知晓任务执行的进度多个任务串行执行缺点生命周期和宿主的生命周期不同步有可能发生内存泄漏(解决方案将AsyncTask定义为静态内部类) import android.content.Context; import android.os.AsyncTask; import android.util.Log;public class ConcurrentTest {public static void test(Context context){class MyAsyncTask extends AsyncTaskString,Integer,String {Overrideprotected String doInBackground(String... strings) {for (int i0;i10;i){publishProgress(i*10);}return strings[0];}Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);Log.e(hzulwy,onPostExecute: s);//输出execute myAsyncTask}Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);Log.e(hzulwy,onProgressUpdate: values[0]);//输出10-90}}//适用于需要知道任务执行进度并更新UI的场景MyAsyncTask myAsyncTask new MyAsyncTask();//默认串行myAsyncTask.execute(execute myAsyncTask);//并发执行myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,execute myAsyncTask);//以这种方式提交的任务所有任务串行执行即先来后到但是如果其中有一条任务休眠了或者执行时间过长后面的任务将被阻塞AsyncTask.execute(new Runnable() {Overridepublic void run() {Log.e(hzulwy,run:AsyncTask.execute);}});//适用于并发任务执行AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {Overridepublic void run() {Log.e(hzulwy,run: THREAD_POOL_EXECUTOR AsyncTask.execute);}});} }HandlerThread适用于主线程需要和工作线程通信适用于持续性任务比如轮询的场景所有任务串行执行。缺点不会像普通线程一样主动销毁资源会一直运行着所以可能会造成内存泄漏 需要程序员手动释放 public class ConcurrentTest {private static final int MSG_WHAT_1 1;public static void test1(){HandlerThread handlerThread new HandlerThread(handler-thread);handlerThread.start();handlerThread.quitSafely();//在适当的地方释放资源MyHandler myHandler new MyHandler(handlerThread.getLooper());myHandler.sendEmptyMessage(MSG_WHAT_1);}static class MyHandler extends Handler{public MyHandler(Looper looper){super(looper);}Overridepublic void handleMessage(NonNull Message msg) {super.handleMessage(msg);Log.e(hzulwy,handleMessage: msg.what);//输出1Log.e(hzulwy,handleMessage: Thread.currentThread().getName());//输出handler-thread}} }IntentService适用于我们的任务需要跨页面读取任务执行的进度结果。比如后台上传图片批量操作数据库等。任务执行完成后就会自我结束所以不需要手动stopservice这是它与service的区分。IntentService包含了service的全部特色。 class MyIntentService extends IntentService{Overrideprotected void onHandleIntent(Nullable Intent intent) {int command intent.getIntExtra(command,0);//...}context.startService(new Intent());}ThreadPoolExecutor适用于快速处理大量耗时较短的任务场景(使用最广泛) Executors.newCachedThreadPool();//线程可复用线程池Executors.newFixedThreadPool(1);//固定线程数量的线程池Executors.newScheduledThreadPool(1);//指定定时任务的线程池Executors.newSingleThreadExecutor();//线程数量为1的线程池线程的优先级 Thread thread new Thread();thread.start();int ui_proi Process.getThreadPriority(0);int th_proi thread.getPriority();//输出结果ui_proi 5;th_proi 5;线程的优先级具有继承性在某线程中创建的线程会继承此线程的优先级。那么我们在UI线程中创建了线程则线程优先级是和UI线程优先级一样平等的和UI线程抢占CPU时间片资源。JDK api限制了新设置的线程的优先级必须为[1~10]优先级priority的值越高获取cpu时间片的概率越高。UI线程的优先级为5。使用这种方式来设置优先级对线程影响的概率并不大。Android api可以为线程设置更加精细的优先级(-20~19),优先级的值越低获取CPU时间片的概率越高。UI线程优先级为-10。推荐使用影响较大而且与JDK的方式设置线程优先级互不影响。 Process.setThreadPriority(-10); 线程的几种状态与常用方法 //需要保证wait-notify方法的调用顺序即先wait后notify否则会有假死的情况private volatile boolean hasNotify false;final Object object new Object();public void test2(){Thread thread1 new Thread(new Runnable1());Thread thread2 new Thread(new Runnable2());thread1.start();thread2.start();}class Runnable1 implements Runnable{Overridepublic void run() {Log.e(hzulwy,run:thread1 start);synchronized (object){try {if(!hasNotify){//规避假死情况object.wait(1000);}} catch (InterruptedException e) {e.printStackTrace();}}Log.e(hzulwy,run:thread1 end);}}class Runnable2 implements Runnable{Overridepublic void run() {Log.e(hzulwy,run:thread2 start);synchronized (object){object.notify();hasNotify true;}Log.e(hzulwy,run:thread2 end);}} public void test2(){//一个线程需要等待另一个线程执行完才能继续的场景Thread thread new Thread(new Runnable() {Overridepublic void run() {Log.e(hzulwy,run: 1System.currentTimeMillis());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}Log.e(hzulwy,run: 2System.currentTimeMillis());}});thread.start();try {thread.join();} catch (InterruptedException e) {e.printStackTrace();}//等thread执行完成后才会执行下面的日志Log.e(hzulwy,test: 3System.currentTimeMillis());//输出结果//run: 1//run: 2//test: 3}
http://www.hkea.cn/news/14303597/

相关文章:

  • 如何设计一个网站网站不会更新文章
  • 合肥的网站建设公司如何制作框架网页
  • 主题网站开发介绍邯郸房产信息网恋家网
  • 网站开发需要甲方提供什么网站建设公司哪家好该如何选择
  • excel做网站页面布局网站建设最关键的两个素材
  • 济宁网站建设是什么意思内网网站建设的必要性
  • 东莞推广系统怎么做seo培训学院
  • 制作网站需要哪些成本怎样用mysql做网站
  • 长春网站建设网深圳市建设工程交易服
  • 网站建设有多少公司手机免费制作自己的网站
  • 网站的技术维护一般要做些什么多元网络兰州网站建设
  • 如果创建网站网站推广描述
  • 江门模板开发建站wordpress邮件服务
  • 合肥网站排名优化公司专业团队为您服务
  • 动易网站管理系统教程网页源代码中什么标记必不可少
  • 网站jquery上传源代码网站内容及实现的方式
  • 做神马网站免费云主机永久使用
  • 怎么建免费网站在线 建站单页面网站带后台
  • 网站建设公司权威排名安卓网站开发视频
  • 做钢材的网站有哪些网站开发作用
  • 个人做电商网站alpha wordpress 版本
  • 广州自助建站模板聊城网站建设信息
  • 深圳网站建设黄浦网络 技术差公司网站建设推荐q479185700顶上
  • 站长字体c做的网站
  • 网站建设合同 包括什么宁波市北仑区建设局网站
  • 荥阳做网站推广百度网站怎么做信息
  • 本地网站开发环境搭建网络公司经营范围写电子商务
  • 智慧团建入口登录网站腾云网站建设怎么样
  • 青岛公司网站开源微信商城源码
  • 赣县城乡规划建设局网站携永东方 wordpress