传统的实现线程的方式为三种,分别为继承Thread类,重写run()方法;实现Runable接口,重写run()方法;实现callable接口,重写call()方法;下面来记录一下最基本的三种编码实现。

一、继承Thread

public class ExtendsThread  extends Thread{

    public void run(){
System.out.println("Hello Thread");
} public static void main(String[] args) {
ExtendsThread et1 = new ExtendsThread();
ExtendsThread et2 = new ExtendsThread();
et1.start();
et2.start();
} }

二、实现Runnable接口

public class ImplementsRunable implements Runnable {

    public void run() {
System.out.println("Hello Thread");
} public static void main(String[] args) {
ImplementsRunable ir1 = new ImplementsRunable();
ImplementsRunable ir2 = new ImplementsRunable();
new Thread(ir1).start();
new Thread(ir2).start();
}
}

三、实现callable接口

public class ImplementsCallable implements Callable {

    private int id;

    public ImplementsCallable(int id){
this.id = id;
} public String call() throws Exception {
return "This Thread Id Is : "+this.getId();
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService es = Executors.newCachedThreadPool();
List<Future<String>> results = new ArrayList();
for(int i=1;i<=10;i++){
results.add(es.submit(new ImplementsCallable(i)));
}
Thread.sleep(10000);
for(Future<String> fs : results){
if (fs.isDone()) {
System.out.println(fs.get());
} else {
System.out.println("The Thread is not down yet");
}
}
es.shutdown();
}
}

注:ExecutorService的execute()方法没有返回值,而submit()方法有返回值,类型为Future<T>。

java多线程的几种实现方式记录的更多相关文章

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

    java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...

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

    java多线程的几种实现方式 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通 ...

  3. 阿里巴巴--java多线程的两种实现方式,以及二者的区别

    阿里巴巴面试的时候,昨天问了我java面试的时候实现java多线程的两种方式,以及二者的区别当时只回答了实现线程的两种方式,但是没有回答上二者的区别: java实现多线程有两种方式: 1.继承Thre ...

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

    Java总共有两种方式实现多线程 方式1:通过继承Thread类的方式 package com.day04; /** * 通过继承Thread类并复写run方法来是实现多线程 * * @author ...

  5. java 多线程编程三种实现方式

    一种是继承Thread类,一种是实现Runable接口,还有一种是实现callable接口: 有博主说只有前面2种方式,我个人愚见是三种,主要详细介绍下callable的使用: 三种线程的我的个人理解 ...

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

    主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Callable.Futur ...

  7. java多线程的两种创建方式

    方式一:继承Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run()方法---> 将此线程执行的操作声明在run()中 3.创建Thread类的子类的对象 4. ...

  8. Java多线程的几种创建方式

    方法一:继承Thread类,重写run方法,直接调用start方法开启线程. /** * 继承Thread类,直接调用start方法开启线程. * @author LuRenJia */ public ...

  9. 创建Java多线程的两种方式和线程异常

    一.使用多线程的两种方法  使用多线程的两种方法有:继承Thread类和实现runable接口. 二.继承Thread类 来看一下thread类的源代码: class Thread implement ...

随机推荐

  1. Javascript模式(第四章函数)------读书笔记

    一 背景 js函数的两个特点:1 函数是第一类对象(first-class object):2 函数可以提供作用域 1 函数是对象: 1 函数可以在运行时动态创建,还可以在程序执行过程中创建 2 可以 ...

  2. UISegmentedControl和UIStepper的使用

    UISegmentedControl:分栏控件,常用的属性和方法是 1.tintColor:控制分栏控件的颜色风格 2.insertSegmentWithTitle(Image):插入分栏标题(图片) ...

  3. Github使用指南-从新手到专家

    转载自:http://www.cnblogs.com/xirongliu/p/4589834.html 个人从刚刚开始接触github,啥都不知道,不会用,不知道能够用来干什么,到现在坚持在githu ...

  4. OAF_开发系列15_实现OAF组件重用和继承(案例)

    20150717 Created By BaoXinjian

  5. js多文件上传

    一.HTML 选择文件的时候可以选择多个文件,这个需要我们在input file 里面加入一个属性multiple="multiple" 这样就可以框选文件了 <!DOCTY ...

  6. Android开发资料学习(转载/链接)

    http://www.devdiv.com/android_-forum-102-1.html 各种开源控件集合 http://www.cnblogs.com/android-blogs/p/5342 ...

  7. [AS3.0] NetConnection.Connect.Rejected 解决办法

    以下是运用FMS录制视频的一段代码: package { import flash.display.Sprite; import flash.events.AsyncErrorEvent; impor ...

  8. makefile 函数集

    1 if 函数 语法 $(if CONDITION,THEN-PART[,ELSE-PART]) 功能 第一个参数"CONDITION",在函数执行时忽略其前导和结尾空字符,如果包 ...

  9. Cacti监控Centos抓包unreachable - admin prohibited

    :: 抓包发现总是有这个出现,而且是跟在GetRequest后面. 打开iptables配置: 最开始网上找的配置语句是这个, -A INPUT -p udp -m udp --sport -j AC ...

  10. Error 2103 “Unhandled Error in Silverlight Application“ 解决办法

    当调试SilverLight项目时,如果出现如下错误: 当调试页面时出现如下错误: 解决办法为:打开工程属性,在Startup object:处选择相应的启动应用程序.