Java的三种多线程
项目结构
继承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的三种多线程的更多相关文章
- iOS的三种多线程技术NSThread/NSOperation/GCD
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- 理解java的三种代理模式
代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...
- java 的三种代理
java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作, ...
- Java的三种代理模式(Spring动态代理对象)
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现 -- 转
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...
- NSThread/NSOperation/GCD 三种多线程技术
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...
随机推荐
- img atl和a title
今天发现一个有趣的现象. <a href="#" title="a"><img src="xxx.jpg" alt=& ...
- Vue 组件以及生命周期函数
组件相当于母版的功能 新建.vue文件,手动完善 <template><div>根节点</div></template> <script>& ...
- python爬虫rp+bs4
一.开发环境 Beautiful Soup 4.4.0 文档: http://beautifulsoup.readthedocs.io/zh_CN/latest/#id28 Requests : ht ...
- C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...
- nodejs——压缩文件_archiver
工作需要,由于html无法访问并下载带有中文的路径,例子:“127.0.0.1::8088/files/第一张图片.jpg”,所以想到了先将原图片压缩并命名为不带中文的文件名,下载后用户自行解压缩的方 ...
- ORM Nhibernet 框架的 CRUD 操作
Nhibernet 的基本语法: private ISession _session; public ISession Session { set { _session = value; } } pu ...
- python学习之RabbitMQ-----消息队列
RabbitMQ队列 首先我们在讲rabbitMQ之前我们要说一下python里的queue:二者干的事情是一样的,都是队列,用于传递消息 在python的queue中有两个一个是线程queue,一个 ...
- CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
自我学习:一.线程安全日期格式化操作的几种方式:1.每次new一个新对象:public static Date parse(String date) throws ParseException { r ...
- (10/24) 图片跳坑大战--处理html中的图片
补充,在前面的服务启动执行命令中,我们在package.json中的配置信息为: "scripts": { "server": "webpack-de ...
- OpenCL 双调排序 GPU 版
▶ 参考书中的代码,写了 ● 代码,核函数文件包含三中算法 // kernel.cl __kernel void bitonicSort01(__global uint *data, const ui ...
