Java中实现多线程主要有两种方式:继承Thread类、实现Runnable接口。
Thread类存放于java.lang类库中,系统默认加载这个包,所以可以直接使用Thread类。

class myThread extends Thread{属性方法修饰符 run(){ //激活的线程将从run()方法开始执行要执行的代码块}
}new myThread().start();  //在程序中需要执行线程的地方插入此语句,激活线程

在Java中不允许多继承,一个子类只能有一个父类,但是可以通过实现接口的方式达到多继承效果。因此,可以实现Runnable接口来创建线程。

class MyThread implements Runnnable(){属性方法public void run(){要执行的代码块}
}MyThread myThread = new MyThread();  //实例化一个MyThread类型对象
new Thread(myThread).start();  //使用Thread类的start方法激活此线程

Runnable接口实现的线程类需要调用Thread类中的start()方法是由于Runnable接口中只有一个run()方法,没有start()方法。

举一个多线程的例子

public class ThreadDemo extends Thread {public static void main(String[] args) {// TODO 自动生成的方法存根ThreadDemo t1 = new ThreadDemo();t1.start(); try {Thread.sleep(10);} catch (InterruptedException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}for(int i=0;i<3;++i){t1.Msg(); //Msg()中调用了currentThread(),//调用Msg()方法间接调用了currentThread()//要注意的是,调用者是main线程,并非子线程实例t1try{Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}}}public void run(){for(int i = 0; i<3; ++i){Msg();try{Thread.sleep(1000); //休眠线程1s}catch(InterruptedException e){e.printStackTrace();}}}public void Msg(){Thread t = Thread.currentThread(); //currentThread()是静态方法,//调用时要跟在类名后而非对象名,//该方法返回执行该方法的线程实例   String name = t.getName(); //获取线程名System.out.println("name = "+name);}
}

运行结果:

在之前《MPD解析模块在Android中的实现》一文中,对耗时的MPD下载、解析过程创建了子线程,因为子线程不能对UI进行操作,于是调用showResponse(final String response)方法,将子线程的解析结构结果以string对象传递给UI线程,之后经过TextView显示出来。

 private void showResponse(final String response) {//子线程中不允许进行UI操作,因此利用showResponse()方法切换到主线程更新runOnUiThread(new Runnable() {@Overridepublic void run() {responseText.setText(response);//创建一个TextView显示传入字符串}});}---------------------
原文:https://blog.csdn.net/qq_34041083/article/details/85103846

在Android中Java多线程还有一个常见的用处,设置启动页。如果想在已有MainActivity基础上增加一个图片主题的启动页,可以利用多线程延迟MainActivity的启动,并在其启动之前调用布局的图片。

public class DisplayActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_display);new Thread(new Runnable() {@Overridepublic void run() {try{Thread.sleep(3000); //MainAvtivity的启动时间延迟3秒}catch(InterruptedException e){e.printStackTrace();}runOnUiThread(new Runnable() {@Overridepublic void run() {//跳转至 MainActivityIntent intent = new Intent(DisplayActivity.this, MainActivity.class);  startActivity(intent);//结束当前的 ActivityDisplayActivity.this.finish();}});}}).start();}
}

即在MainActivity之前增加DisplayActivity,DisplayActivity的layout文件中仅布局一张图片,这样即可实现Android App启动页(广告)设置。

Android客户端多线程实例分析相关推荐

  1. Android串口通信实例分析【附源码】

    Android 串口通信实例分析,用的时开源的android-serialport-api 这个是用android ndk实现的串口通信,我把他做了一个简化,适合于一般的程序的串口通信移植,欢迎拍砖- ...

  2. 人人网官方Android客户端源码分析(1)

    ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,允许其他应用访问或修改数据;其他应用程序使用ContentRes ...

  3. WordPress Blog Android客户端源码分析(一)

    一直想找一个大型的Android开源项目进行分析,由于自身和导师课程需要选择了wordpress的Android客户端源码进行学习和解读.源码github官方下载地址:开源项目地址.分析源码的最佳手段 ...

  4. android 图片分析,Android图片处理实例分析

    本文实例讲述了Android图片处理的方法.分享给大家供大家参考,具体如下: package cn.szbw.util; import Android.content.Context; import ...

  5. 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...

    1启动界面的布局文件为app_start.xml ,对应的类文件为net.oschina.app 包下的AppStart.java. 2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背 ...

  6. 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框

    为什么80%的码农都做不了架构师?>>>    功能描述:主界面中点击"我"进入个人中心, 点击右侧二维码图标,弹出附有个人信息的二维码对话框. 1源码中的布局文 ...

  7. 第四次个人作业——关于微软必应词典android客户端的案例分析

    [前言] 第一次搞测评这种东西,如果有什么疏漏,请多多谅解.测评内容如题. 第一部分 调研,评测 评测:(设备:Lenovo A806) 软件的bug,功能评测,黑箱测试 bug等级划分方式 5级分类 ...

  8. Android Touch事件原理加实例分析

    Android中有各种各样的事件,以响应用户的操作.这些事件可以分为按键事件和触屏事件.而Touch事件是触屏事件的基础事件,在进行Android开发时经常会用到,所以非常有必要深入理解它的原理机制. ...

  9. Android架构实例分析之编写hello驱动的HAL层代码

    Android架构实例分析之编写hello驱动的HAL层代码 摘要: HAL层中文名称又叫硬件抽象层,可以理解我Linux驱动的应用层.本文实现了一个简单的hello HAL的代码,衔接hello驱动 ...

最新文章

  1. 面向对象软件开发代码结构(2)
  2. 网络编程中使用float型数据要注意
  3. eclipse优化运行速度_IPFS:强化公共DHT以抵抗eclipse攻击
  4. matebook14装鸿蒙系统,matebook14几个接口
  5. API接口通讯参数规范(2)
  6. 《深入浅出struts》读书笔记(3)
  7. Word 2007~2010手动双面打印设置
  8. 分享一些使用电脑的小技巧
  9. java集成 腾讯信鸽_移动推送 腾讯信鸽集成
  10. 迅为iTOP-4418开发板Android系统网络测速工具iPerf-TCP测试
  11. 东风谷早苗 简单的水题
  12. 快速排序算法的发明者霍尔
  13. 第十一周项目2--定义点类
  14. VBA小模板,跨表统计的2种写法
  15. python peewee 批量插入
  16. ps和php有什么关系,lr和ps有什么区别
  17. 人机对话的梦想与AI智能音箱
  18. 计算机键盘怎么换键,电脑修改键盘按键的方法
  19. 惠普HP AMP 125 打印机驱动
  20. 【MySQL入门指北】第六篇 按条件筛选

热门文章

  1. 客快物流大数据项目(十八):Docker私有仓库
  2. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
  3. 2021年大数据ELK(一):集中式日志协议栈Elastic Stack简介
  4. Laravel中Redis的配置和使用
  5. Python案例:使用BeautifuSoup4的爬虫
  6. Python enumerate() 函数的使用
  7. Android 内容观察者 ContentObserver 类
  8. github自己的仓库给别人上传代码的操作
  9. 设置子节点相对于父节点水平竖直都居中
  10. Cannot find snapshot in models/VGGNet/VOC0712/SSD_300x300