Android 多线程的前世之java多线程初探

一 概述

        多线程这个概念,在很多程序员看来 ,是一个难点。因为这东西有些抽象,不好理解。刚好晨有些时间把这块单独拎出来。好好缕缕思路。顺便总结下。在java中,我们都知道有这么个线程的概念( 线程是进程的一个实体 ,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源,而进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位,基于个人理解进程包含了线程【一个进程里可能有多个线程】)Android的多线程也是基于java引用过来的。所以谈论Android多线程,我们肯定先要弄懂java多线程。并且我们也要区分android线程与java多线程的异同点

二 分析与对比

         在java中常见的两种方式创建线程,一种;直接继承Thread重载他的run方法,二种;实现runnabl接口并重在他的run方法,那么两种方式有何分别呢?我们通过实验证明

1 直接继承Thread实现多线程
package com.example;
public  class MyThread extends Thread{
        private int tick=100;//每个线程默认分配100
        public MyThread(String name){
            super(name);
        }
        @Override
        public void run() {
            super.run();
            while(tick>0){
                System.out.println(tick--+" is saled by "+Thread.currentThread().getName());
            }
        }
}
2 实现runable接口
package com.example;

/**
 * Created by Administrator on 2017/1/13.
 */

public class MyRunnable implements Runnable {
    private int tick=100;
    private String name;
    public MyRunnable(String name){
        this.name=name;
    }
    @Override
    public void run() {
        while(tick>0){
            System.out.println(tick--+" is saled by "+name);
        }
    }
}
java主方法
package com.example;

public class MyClass {
    public static void main(String[] args){
        //Thread方式
        MyThread m1=new MyThread("A");
        MyThread m2=new MyThread("B");
        MyThread m3=new MyThread("C");
        m1.start();
        m2.start();
        m3.start();
        //runnable方式
//        Thread r1=new Thread(new MyRunnable("A"));
//        Thread r2=new Thread(new MyRunnable("B"));
//        Thread r3=new Thread(new MyRunnable("C"));
//        r1.start();
//        r2.start();
//        r3.start();
    }
}
上面就是通过两种方式实现的多线程


该图就是上面的运行截图。从截图我们可以看到我们创建的3个线程。他们是随机运行的(而并不是哪个线程运行完了,到另一线程。每个线程相互独立互不干扰的走完自己的程序)那这两种线程孰优孰劣呢?
1.如果是继承实现多线程,不利于该线程类的扩展。而实现接口的方式确可以
2.通过runnale接口实现的多线程,可以处理同一资源从而实现资源的共享(可以说正是由于第一条原因导致继承实现的不能实现这样的功能)

三 总结

       通过上面的分析我们可以得出正常情况下,通过以上两种方式,都可以开启多线程。但是最好用实现runnale的实现方式,相对继承,他可以扩展和资源共享。那么Android多线程的实现方式是不是也和他一样呢?也是这两种方式呢?我会在下一节会着重介绍Android的多线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值