栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程 asynctask thread

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程 asynctask thread

asynctask

asynctask是一种轻量级的异步任务类,可以在线程中执行后台任务,然后把任务执行结果传递到主线程,封装了thread和handler。采用了线程池的机制

线程池:asynctask就是通过线程池来执行异步任务的,

线程池的好处

1、重用线程池中的线程,避免了频繁创建和销毁线程

2、有效控制线程最大的并发数,避免了大量的线程之间因为相互抢占系统资源导致阻塞

3、简单的对线程进行管理,并提供定时执行以及指定间隔循环执行等功能

简单来说线程池就是系统为我们提供的管理线程的模块,通过它可以方便的控制项目中的线程,android中的线程池概念来自java中的executor,executor是一个接口,真正的线程池的实现是threadPoolExecutor,threadPoolExecutor提供了一系列参数来配置线程池

Thread

1、Thread的start()和run()是什么?

start()主要是启动线程,在内部调用runnable接口的run()方法,以单独的线程执行run()方法中的代码。

2、start()和run()的区别有哪些?

  • 方法的定义:start()方法在java.lang.Thread类中定义,而run()方法在Runnable接口中定义,必须在实现类中重写
  • 多次调用:start()方法不能多次调用,否则抛出异常,而run()方法可以多次调用,因为只是一种正常的方法调用。
  • 新线程创建:当调用start()方法,会创建一个新线程,然后执行run()方法。如果直接调用run()方法,则不会创建新的线程,run()方法将作为当前调用线程本身的常规方法调用执行,不会发生多线程。
  • 调用start()方法,会创建一个新的线程:
    
    class MyThread extends Thread {
        public void run() {
            System.out.println("当前线程的名称: " + Thread.currentThread().getName());
            System.out.println("run()方法调用");
        }
    }
    
    class demo {
        public static void main(String[] args) {
            MyThread t = new MyThread();
            t.start();
        }
    }
    
    直接调用()方法,不会创建新线程,而是在当前的线程执行run()方法
    
    class MyThread extends Thread {
        public void run() {
            System.out.println("n");
            System.out.println("当前线程的名称: " + Thread.currentThread().getName());
            System.out.println("run()方法调用");
        }
    }
    
    class Test {
        public static void main(String[] args) {
            MyThread t = new MyThread();
            t.run();
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号