前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

方式1:继承Thread类

步骤:

1):定义一个类A继承于Java.lang.Thread类.

2):在A类中覆盖Thread类中的run方法.

3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体.

4):在main方法(线程)中,创建线程对象,并启动线程.

(1)创建线程类对象:

A类   a  =  new   A类();

(2)调用线程对象的start方法:

a.start();//启动一个线程

注意:千万不要调用run方法,如果调用run方法好比是对象调用方法,依然还是只有一个线程,并没有开启新的线程.

线程只能启动一次!

创建启动线程实例:

[java] view plain copy
  1. //1):定义一个类A继承于java.lang.Thread类.
  2. class MusicThread extends Thread{
  3. //2):在A类中覆盖Thread类中的run方法.
  4. public void run() {
  5. //3):在run方法中编写需要执行的操作
  6. for(int i = 0; i < 50; i ++){
  7. System.out.println("播放音乐"+i);
  8. }
  9. }
  10. }
  11. public class ExtendsThreadDemo {
  12. public static void main(String[] args) {
  13. for(int j = 0; j < 50; j ++){
  14. System.out.println("运行游戏"+j);
  15. if(j == 10){
  16. //4):在main方法(线程)中,创建线程对象,并启动线程.
  17. MusicThread music = new MusicThread();
  18. music.start();
  19. }
  20. }
  21. }
  22. }

方式2:实现Runnable接口

步骤:

1):定义一个类A实现于java.lang.Runnable接口,注意A类不是线程类.

2):在A类中覆盖Runnable接口中的run方法.

3):我们在run方法中编写需要执行的操作:run方法里的,线程执行体.

4):在main方法(线程)中,创建线程对象,并启动线程.

(1)创建线程类对象:

Thread  t = new Thread(new  A());

(2)调用线程对象的start方法:

t.start();

[java] view plain copy
  1. //1):定义一个类A实现于java.lang.Runnable接口,注意A类不是线程类.
  2. class MusicImplements implements Runnable{
  3. //2):在A类中覆盖Runnable接口中的run方法.
  4. public void run() {
  5. //3):在run方法中编写需要执行的操作
  6. for(int i = 0; i < 50; i ++){
  7. System.out.println("播放音乐"+i);
  8. }
  9. }
  10. }
  11. public class ImplementsRunnableDemo {
  12. public static void main(String[] args) {
  13. for(int j = 0; j < 50; j ++){
  14. System.out.println("运行游戏"+j);
  15. if(j == 10){
  16. //4):在main方法(线程)中,创建线程对象,并启动线程
  17. MusicImplements mi = new MusicImplements();
  18. Thread t = new Thread(mi);
  19. t.start();
  20. }
  21. }
  22. }
  23. }

分析继承方式和实现方式的区别:

继承方式:
                1):从设计上分析,Java中类是单继承的,如果继承了Thread了,该类就不能再有其他的直接父类了.
                2):从操作上分析,继承方式更简单,获取线程名字也简单.(操作上,更简单)
                3):从多线程共享同一个资源上分析,继承方式不能做到.
实现方式:
                1):从设计上分析,Java中类可以多实现接口,此时该类还可以继承其他类,并且还可以实现其他接口,设计更为合理.
                2):从操作上分析,实现方式稍微复杂点,获取线程名字也比较复杂,得使用Thread.currentThread()来获取当前线程的引用.

3):从多线程共享同一个资源上分析,实现方式可以做到(是否共享同一个资源).

补充:实现方式获取线程名字:

String name = Thread.currentThread().getName();

方式3:直接在函数体使用(匿名内部类,其实也是属于第二种实现方式的特例。)

[cpp] view plain copy
  1. void java_thread()
  2. {
  3. Thread t = new Thread(new Runnable(){
  4. public void run(){
  5. // run方法具体重写
  6. mSoundPoolMap.put(index, mSoundPool.load(filePath, index));
  7. getThis().LoadMediaComplete();
  8. }});
  9. t.start();
  10. }

java开启新线程的三种方法相关推荐

  1. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 目录 一.继承Thread类来创建线程 二.实现Runnable接口来创建线程 三.通过Callable和Future来创建线程 四.三种方式创 ...

  2. java 终止方法_Java中终止线程的三种方法

    Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...

  3. Java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  4. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  5. Java 创建一个线程的三种方式

    Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...

  6. java 获取当前时间的三种方法是什么

    本文主要介绍java获取当前时间的三种方法.这篇文章很详细,有一定的参考价值.有需要的朋友可以参考一下. 总结一些java中获取当前时间的方法. System.currentTimeMillis() ...

  7. Java实现九九乘法表(三种方法实现)

    Java实现九九乘法表(三种方法实现) 题目要求: /*输出以下九九乘法表 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 ......*/ 代码实现一(使用两层for循环--最常用): ...

  8. linux启动进程 c,Linux启动新进程的三种方法

    程序中,我们有时需要启动一个新的进程,来完成其他的工作. 下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程 system函数,是通过启动shel ...

  9. java 获取随机数字的三种方法

    1 //方法1 (数据类型) 2 //(最小值+Math.random()*(最大值-最小值+1)) 3 // 例: 4 (int)(1+Math.random()*(10-1+1)) //从1到10 ...

最新文章

  1. 那些容易忽略的事(1) -变量与运算符+
  2. python常用库 自动化办公类 —— PyPDF2(处理pdf文件)
  3. 前端学习(1363):学生档案信息管理5
  4. 一文搞懂 PyTorch 内部机制
  5. Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例...
  6. 《淘宝网开店 SEO 推广 营销 爆款 实战200招》——1.3 网上开店的热门行业有哪些...
  7. 转载:XPath基本语法
  8. 使用反射创建实例/对象的两种方法
  9. Apache POI简单入门
  10. 事件发生位置的相对性——思想实验推导狭义相对论(二)
  11. 悲剧!广电总局12月11日将封闭的网站目录!!!
  12. ECSHOP V2.7.3文件目录结构
  13. tkinter尤克里里爬格子练习器
  14. 数仓理论知识之什么是度量,什么是粒度,什么是事实,什么是维度
  15. Python笔记之通过PyWin32模块实现在QQ聊天窗口自动发送消息
  16. 关于K8s中资源配置范围管理(LimitRange)的一些笔记
  17. 探究Bitmap在Android中的内存占用
  18. 《机器人爱好者(第1辑)》——机器人领域新动态
  19. 移动云迁移工具:Xen虚拟化迁移到移动云
  20. 史上最全的Android面试题集锦

热门文章

  1. REVERSE-PRACTICE-CTFSHOW-6
  2. REVERSE-PRACTICE-BUUCTF-7
  3. java中sql之count_按SQL Server中的count()子句分组
  4. docker安装与学习
  5. 【PAT - 甲级1003】Emergency (25分)(Dijkstra,最短路条数,双权值最短路)
  6. 【CodeForces - 675C】Money Transfers(思维,前缀和)
  7. 【qduoj - 312】寻找唯一的萌妹(卡时)
  8. 递归Java_递归的Java实现
  9. C++ 多态和虚函数
  10. leetcode607. 销售员(SQL)