基本的线程机制

并发编程时我们可以将程序或分为多个分离的、独立运行的任务。通过多线程机制,这些独立任务中的每一个都由执行线程来驱动。

线程可以驱动任务,因此需要一种描述任务的方式,这可以通过 Runnable 接口来提供,通过继承Runnable接口,并编写 run() 方法来定义任务。

这样就引出了,实现java多线程的第一种方式:

1.通过实现Runnable接口实现

public class MyThread implements Runnable{public void run(){System.out.println("New Thread : "+Thread.currentThread().getName());}public static void main (String []args){MyThread thread = new MyThread();Thread t = new Thread(thread);t.start();System.out.println("Main Thread : " + Thread.currentThread().getName());}
}

实现Runnable接口的类,只是定义了任务,但是并没有任何内在的线程能力。所以需要通过Thread类的构造器来将任务驱动在一个线程中。

当然还有一种更简洁的实现方式,因为Thread类已经实现了Runnable方法,所以直接继承Thread类,并复写 run() 方法,即可实现多线程。这是实现多线程的第二种方式。

2.通过继承Thread类实现

public class MyThread extends Thread{public void run(){System.out.println("New Thread : "+Thread.currentThread().getName());}public static void main (String []args){MyThread thread = new MyThread();thread.start();System.out.println("Main Thread : " + Thread.currentThread().getName());}
}

继承Thread类,然后复写 run() 方法,最后通过调用 start() 方法来启动线程。

3.通过继承Callable接口实现

import java.util.concurrent.*;//定义任务
class Task implements Callable<String>{private String name;public Task(String name){this.name = name;}public String call(){//        线程的返回值为线程的name属性值return name;}
}public class MyThread {public static void main (String []args) {Callable<String> call = new Task("3527");FutureTask<String> task = new FutureTask<>(call);Thread t = new Thread(task);t.start();
//      这里暂停一下是为了等待线程执行完,以便于获取结果值,try{Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}if(task.isDone()){try{System.out.println(task.get());}catch(InterruptedException e){e.printStackTrace();}catch(ExecutionException e){e.printStackTrace();}}else{System.out.println("task is not completed");}}
}

定义任务对象,并用FutureTask进行包装,最后同过Thread构造器来驱动该任务在新的线程中执行。

java多线程实现的几种方式相关推荐

  1. JAVA多线程实现的三种方式

    文章目录 继承Thread类实现多线程 实现Runnable接口方式实现多线程 区别 ExecutorService/Callable/Future实现有返回结果的多线程 步骤 概念 实例(可忽略) ...

  2. Java多线程实现的两种方式

    Java多线程实现方式:1.实现Runnable接口2.继承Thread类,虽然是比较基础的知识点,作为学习记录写下来,高手略过! 1.实现Runnable接口 1) RunnableDemo类 pa ...

  3. Java——多线程实现的三种方式

    创建新执行线程有三种方法. 第一种方法是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例. 例如,计算大于某一规定值的质数的线程可以写 ...

  4. JAVA多线程实现的三种方式 ()

    1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就 ...

  5. java多线程都有几种方式实现

    有三种:     (1)继承Thread类,重写run函数         创建: [java] view plaincopy <span style="font-size:12px; ...

  6. java开启一个线程_【jdk源码分析】java多线程开启的三种方式

    1.继承Thread类,新建一个当前类对象,并且运行其start()方法 1 packagecom.xiaostudy.thread;2 3 /** 4 * @desc 第一种开启线程的方式5 *@a ...

  7. Java多线程实现的四种方式

    1.继承Thread类: public class ThreadTest {static class ThreadA extends Thread {@Overridepublic void run( ...

  8. java几种多线程_Java多线程实现的几种方式

    Java多线程实现的几种方式 多进程是计算机中的一个重要概念,通常一个任务称为一个进程,比如浏览网页.播放音乐都是一个进程. 在进程内部可能还需要执行多个子任务,比如在使用word文档打字的时候,不仅 ...

  9. java实现线程的方式_java多线程实现的四种方式

    java多线程实现的四种方式1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口) 2.实现Runnable接口,重写run方法 3.实现Callable接口,重 ...

最新文章

  1. HtmlUnit解析动态网页并采集网页列表到Excel
  2. .Net Micro Framework 快速入门
  3. MySQL sysdate()函数
  4. Angular2学习笔记——在子组件中拿到路由参数
  5. java bean状态_无状态和有状态的企业Java Bean
  6. linux之type命令
  7. wordpress 资料管理系统_说一说库存管理系统。
  8. python属性_Python属性()
  9. C语言 三角函数用法
  10. 如何查看java安装路径
  11. 手机兼职做任务发布悬赏赚钱的APP汇总到底有多少?
  12. 初探OAuth2.0第三方认证登录
  13. 缓存路由组件+路由组件的2个生命周期钩子 activated 和 deactivated
  14. SQLServer安装程序无法打开注册表项 UNKNOWN\Components\…的问题
  15. “3D游戏之父”考古“诺基亚时代”手游,网友:求支持智能手机!
  16. 如何查看电脑端口占用
  17. 《数据清洗》——kettle基本工具的使用
  18. Fairplay之streamingContentKeyRequestDataForApp makeStreamingContentKeyRequestDataForApp
  19. Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組
  20. 类似QQ空间,微信朋友圈,微博主页等,展示图片的九宫格控件

热门文章

  1. 恐惧 android游戏,恐惧之间游戏-恐惧之间安卓版最新预约v1.0-游迅网
  2. 快上车!通用自主开发无人驾驶汽车首次公开试驾 | 精选
  3. 统考计算机英语通过率,网络教育统考英语难考吗 通过率怎么样
  4. 基于历史数据查询的爬虫操作
  5. 仿微信在对话框文字中插入Emoji表情包
  6. win10系统遭遇VMware USB Arbitration Service 无法启动,错误31的解决方案
  7. 自学python半年,我入职了......
  8. 小吴外卖(换皮瑞吉外卖)
  9. 贴片sop8转dip转接板
  10. 拼题A L1-028