项目结构

继承Thread类

/*
* Thread类实现了Runnable接口
*/ public class MyThread extends Thread {
@Override
public void run() {
for(int i=0;i<50;i++){
System.out.println("MyThread子线程 : "+Thread.currentThread().getName()+"~~~"+i);
}
}
}

实现Runnable接口

public class MyRunnable implements Runnable {

    @Override
public void run() {
for(int i=0;i<50;i++){
System.out.println("MyRunnable子线程 : "+Thread.currentThread().getName()+"~~~"+i);
}
} }

实现Callable<T>接口

import java.util.concurrent.Callable;
/*
* FutureTask<V>类实现了RunnableFuture<V>接口,
* RunnableFuture<V>接口实现了Runnable接口、Future<V>接口。
* FutureTask<V>对象的get方法:等待计算完成,然后获取其结果。
*/ public class MyCallable implements Callable<Integer> { @Override
public Integer call() throws Exception {
int sum = 0;
for(int i=0;i<100;i++){
sum += i;
System.out.println("MyCallable子线程中间结果 : "+sum);
}
return sum;
} }

运行

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; public class Test { public static void main(String[] args) throws Exception {
System.out.println("主线程 : "+Thread.currentThread().getName());
MyThread thread = new MyThread();
MyRunnable runnable = new MyRunnable();
Thread thread2 = new Thread(runnable);
MyCallable callable = new MyCallable();
FutureTask<Integer> task = new FutureTask<Integer>(callable);
Thread thread3 = new Thread(task);
thread.start();
thread2.start();
thread3.start();
int sum = task.get();
System.out.println("MyCallable子线程最终结果 : " + sum); // 这段代码总是最后执行
} }

Java的三种多线程的更多相关文章

  1. iOS的三种多线程技术NSThread/NSOperation/GCD

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...

  2. Java的三种代理模式

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  3. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  4. 理解java的三种代理模式

    代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...

  5. java 的三种代理

    java的三种代理模式   1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作, ...

  6. Java的三种代理模式(Spring动态代理对象)

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  7. iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...

  8. iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现 -- 转

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...

  9. NSThread/NSOperation/GCD 三种多线程技术

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...

随机推荐

  1. Air test ios类使用

    1.iOS手机的滑动 相关代码 #python class IOS(Device): ... @property #获取屏幕的尺寸 def display_info(self): if not sel ...

  2. 关于input=file的用法

    <input type="file"/>这个东西是用来上传图片用的. 1,但是存在一下问题但是在在各个浏览器下的显示是不一样的 IE下: IE之外的浏览器: 2.如果不 ...

  3. Spring MVC 处理模型数据

    SpringMVC 处理模型数据: 1 controller接收pojo: <form action="save" method="get"> &l ...

  4. bash下. : () {} [] [[]] (())的解释

    bash下有很多像{}.[]等一些符号命令,下面是我对一些常用的符号命令的学习笔记,若有错误或纰漏望各位兄弟指正. 一..(source).(点)与source命令一样,从文件中读取并执行命令,无论该 ...

  5. sql上下级关系查询

    有一张存在上下级关系的function表,parentId表示上级Id,现要查询出上级菜单下的子菜单,每个子菜单显示成以逗号分隔的字符串 表结构如下: create table menu ( id i ...

  6. C# window Service实现调用有UI的应用程序(关于win xp以后的window系统)

    我开发的系统中有一接口程序(这里就称Task,是一个C#的Console Application)经常无故的死掉,导致第二天的数据不能正常解析,所以,我写了一个window service去监视Tas ...

  7. async task 异步消息

     async 和 await 是用来定义的异步方法,async  关键字是上下文关键字,原因在于只有当它修饰方法.lambda 表达式或匿名方法时,它才是关键字. 在所有其他上下文中,都会将其解释为标 ...

  8. GD库简介和使用

    简介 php并不仅限于创建html输出,它也可以创建和处理包括GIF,PNG,jpef,wbmp以及xpm在内的多种格式的图像.更加方便的是,php可以直接将图像数据库输出到浏览器.要想在php中使用 ...

  9. THINKPHP3.2.3增加阿里云短信接口思路整理

    https://help.aliyun.com/document_detail/55359.html?spm=5176.product44282.4.7.O4lc1n 阿里云短信服务地址,感冒的下载看 ...

  10. bootstrapValidator针对设置赋值进行验证

    bootstrapValidator在提交的时候可以进行验证,但是对于点击输入框进行赋值的时候验证失效. 解决方法: 然后在设置change方法方可解决.