一、匿名类实现Runnable接口的方式

public void onClick(View view) {switch (view.getId()){case R.id.test1:new Thread(new Runnable() {@Overridepublic void run() {Log.i("MainActivity----","使用匿名类方式实现线程");}}).start();break;case R.id.test2:
//                myThread mt = new myThread();
//                mt.start();new myThread().start();break;case R.id.test3:
//                myThread2 mt2 = new myThread2();
//                Thread t1 = new Thread(mt2);
//                t1.start();new Thread(new myThread2()).start();break;}}

二、继承Thread类方式

class myThread extends Thread{@Overridepublic void run() {super.run();Log.i("MainActivity----","使用继承Thread的方式实现线程");}
}

三、实现Runnable接口

class myThread2 implements Runnable{@Overridepublic void run() {Log.i("MainActivity----","通过实现类的方式实现线程");}
}

注:
如果是重复连续调用start(),如:
thread1.start();
thread1.start();
会出现以下错误:
Exception in thread “Main Thread” java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:595)
at thread.ThreadTest.main(ThreadTest2.java:19)

原因是:

1)同一个Thread不能重复调用start方法,跟线程的4种状态有关;
2)线程的4种状态:新生状态;可运行状态;阻塞状态;死亡状态
a. 新生状态:在调用start()方法之前
b.可运行状态:调用start()方法后,系统为该线程分配除cpu外的所需资源,对于只有一个cpu的机器而言,任何时刻只能有一个处于可运行的线程占用处理机,获得cpu资源,此时系统正正运行线程的run()方法
c. 阻塞状态:一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态。这是【不可运行】的状态,处于这种状态的线程在得到一个特定的事件后会转回可运行状态
d. 死亡状态:一个线程的run()运行完毕,stop()方法被调用或者在运行过程中出现了未捕获的异常时,线程进入死亡状态。
3. 线程的4中状态除了【可运行状态】与【阻塞状态】可以来回切换,其余的不可逆转

同一个Thread不能重复调用start方法,用new Thread(robot).start 就可以启动多次。

android 创建线程的三种方式相关推荐

  1. java 创建线程_【80期】说出Java创建线程的三种方式及对比

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...

  2. Java创建线程的三种方式

    一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实 ...

  3. 创建线程的三种方式、线程运行原理、常见方法、线程状态

    文章目录 1.创建线程的三种方式 1.1 继承Thread类并重写run方法 1.2 使用Runnable配合Thread 1.3 通过Callable和FutureTask创建线程 2.Runnab ...

  4. java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)

    1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...

  5. 创建线程的三种方式及区别

    一:创建线程的三种方式: 1.继承Thread类 2.实现Runnable接口 3.使用Callable接口 二:创建线程的具体实现步骤: 1.继承Thread类 (1).先继承 Thread类,并且 ...

  6. Java 创建线程的三种方式

    一.继承Thread类创建 1.定义一个类继承Thread类,并重写Thread类的run()方法,run()方法的方法体就是线程要完成的任务,因此把run()称为线程的执行体: 2.创建该类的实例对 ...

  7. Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式

    一共有以下三种方式: 1.继承Thread 2.实现Runnable 3.实现Callable,并FutureTask包装 线程启动方式均是使用start()方法 先阐述优缺点: 1和2,3: 2,3 ...

  8. Java中创建线程的三种方式

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)继承Thread类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. ...

  9. 一、创建线程的三种方式

    一.创建线程 开启一个线程的方法: 继承 Threrad 重写 run方法,调用 start 开启线程 实现 Runnable 接口实现 run方法,创建 Thread 时作为参数传递并调用 star ...

  10. java 创建5个线程_Java创建线程的三种方式

    1.继承Thread 类,创建线程类 ,调用start方法启动  (单一继承 ) public class Test1 extendsThread { @Overridepublic voidrun( ...

最新文章

  1. 仿斗鱼聊天:基于CoreText的面向对象图文排版工具AWRichText
  2. 软件项目第一次Sprint评分表
  3. python3在线-Python 3中的新功能
  4. Python爬虫入门(5):URLError异常处理
  5. adb logcat 命令行用法
  6. ARM系统中断产生流程
  7. 测试管理工具实践(小组作业)
  8. 计算机使用快捷键大全
  9. Spring Boot 设置允许跨域的两种配置方式
  10. 新冠能否开启物联网发展的大门
  11. android 经纬度距离计算器,经纬度距离角度计算软件|经纬度距离角度计算器(geography) v2.0免费版_星星软件园...
  12. 计算机怎么在表格里打勾,怎样在Excel输入对号√,Excel单元格怎么输入对号(方框内打勾)?...
  13. 1148 数字字符出现频率
  14. c语言编程电话簿,C语言实现电话簿项目.pdf
  15. 动画animate的使用
  16. SpringBoot模拟单点登录
  17. mysql MMM架构
  18. 9月19日真实虾皮裁员经历...
  19. Spring三大核心思想学习笔记
  20. 1024,鸽了1024篇博文的我。。。

热门文章

  1. c语言砝码问题,C语言砝码称重问题
  2. 按键精灵手机助手界面三级联动
  3. android 仿站小工具,仿站小工具
  4. 华为状态栏图标替换_【新手教程】状态栏图标替换教程
  5. PyQt4安装使用以及pycharm环境配置
  6. 12V转3.3V稳压芯片7.4v转5V
  7. 2000年建模b题matlab,2013数学建模B题matlab代码
  8. 【学习笔记】福州大学网络课程 网络空间安全概论(1,4)
  9. android tabhost用法详解,android Tabhost部件详解
  10. css 按钮按下样式