文档章节

Java线程实现的三种模式

Joker上上签
 Joker上上签
发布于 2016/11/09 16:55
字数 389
阅读 22
收藏 0

1)Thread:

public class ThreadTest extends Thread {

	public void run(){
		System.out.println(Thread.currentThread()+"say : hello");
	}
	
	public static void main(String[] args){
		new ThreadTest().start();
		new ThreadTest().start();
		new ThreadTest().start();
		new ThreadTest().start();
		new ThreadTest().start();
	}
}

执行结果:

Thread[Thread-2,5,main]say : hello
Thread[Thread-4,5,main]say : hello
Thread[Thread-3,5,main]say : hello
Thread[Thread-0,5,main]say : hello
Thread[Thread-1,5,main]say : hello

2)Runnable:

public class RunnableTest implements Runnable{

	public void run() {
		System.out.println(Thread.currentThread()+"say: hello");
	}
	
	public static void main(String[] args){
		RunnableTest rt = new RunnableTest();
		new Thread(rt,"111").start();
		new Thread(rt,"222").start();
		new Thread(rt,"333").start();
		new Thread(rt).start();
		new Thread(rt).start();
	}
}

执行结果:

Thread[111,5,main]say: hello
Thread[333,5,main]say: hello
Thread[Thread-0,5,main]say: hello
Thread[222,5,main]say: hello
Thread[Thread-1,5,main]say: hello


3)Callable:

public class CallableTest implements Callable<String>{//Callable<V>是泛型,不一定为String类型

	public String call() throws Exception {
		
		System.out.println(Thread.currentThread()+" say : hello");
		return "返回字符串:"+Thread.currentThread().toString();
		
	}
	public static void main(String[] args){
		//Callable和Future一个产生结果,一个拿到结果。
        //Callable接口类似于Runnable,但是Runnable不会返回结果,
		//而Callable可以返回结果,这个返回值可以被Future拿到,
		//也就是说,Future可以拿到异步执行任务的返回值。
		CallableTest ct = new CallableTest();//相当于Callable执行call()内容
		CallableTest ct2 = new CallableTest();
		
		FutureTask<String> ft = new FutureTask<>(ct);//相当于Futrue计算Callable返回的结果
		FutureTask<String> ft2 = new FutureTask<>(ct2);
		
		new Thread(ft,"有返回值得线程").start();
		new Thread(ft2).start();
		
		try {
			//callable的返回值
			System.out.println(ft.get());
			System.out.println(ft2.get());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

执行结果:

Thread[Thread-0,5,main] say : hello
Thread[有返回值得线程,5,main] say : hello
返回字符串:Thread[有返回值得线程,5,main]
返回字符串:Thread[Thread-0,5,main]

© 著作权归作者所有

Joker上上签
粉丝 0
博文 8
码字总数 4630
作品 0
南昌
高级程序员
私信 提问
Tomcat的BIO、NIO、APR模式对比与性能测试结果

11.11活动当天,服务器负载过大,导致部分页面出现了不可访问的状态、那后来就要求调优了,下面是tomcat bio、nio、apr模式以及后来自己测试的一些性能结果。 原理方面的资料都是从网上找的,...

DemonsI
02/15
101
0
Netty源码阅读入门实战(十)-性能优化

1 性能优化工具类 FastThreadLocal 传统的ThreadLocal ThreadLocal最常用的两个接口是set和get 最常见的应用场景为在线程上下文之间传递信息,使得用户不受复杂代码逻辑的影响 我们使用set的...

芥末无疆sss
2018/10/22
0
0
Android 面试必备 - 线程

前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果觉得对...

gdutxiaoxu_
08/04
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
70
0
Java 8新特性探究(十)StampedLock将是解决同步问题的新宠

Java8就像一个宝藏,一个小的API改进,也足与写一篇文章,比如同步,一直是多线程并发编程的一个老话题,相信没有人喜欢同步的代码,这会降低应用的吞吐量等性能指标,最坏的时候会挂起死机,...

OSC闲人
2014/05/13
7.6K
30

没有更多内容

加载失败,请刷新页面

加载更多

浅谈FlyWeight享元模式

一、前言 享元(FlyWeight)模式顾名思义,即是轻量级,原因就是享元,共享元素,这里的元素指的是对象。如何共享对象,那就是在检测对象产生的时候,如果产生的是同一个对象,那么直接使用已...

青衣霓裳
1分钟前
0
0
Python学习10.14:Python set集合详解

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。 从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素...

太空堡垒185
1分钟前
0
0
好程序员大数据教程分享Scala系列之文件以及正则表达式

好程序员大数据教程分享Scala系列之文件以及正则表达式 1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息。 import scala.io.Source object FileDemo extends App{ val ...

好程序员官网
1分钟前
0
0
75.nosql memcached与安装及查看状态

21.1 nosql介绍 21.2 memrcached介绍 21.3 安装memcached 21.4 查看memcachedq状态 21.1 nosql介绍 什么是NoSQL: 1.非关系型数据库就是NoSQL,关系型数据库代表MySQL 也是一种数据库,来存储...

oschina130111
3分钟前
0
0
玩转阿里云 Terraform(二):Terraform 的几个关键概念

上一篇《玩转阿里云Terraform(一):Terraform 是什么》介绍了 Terraform 的基本定义和特点之后,本文将着重介绍几个Terraform中的关键概念。 Terraform 关键概念 在使用Terraform的过程中,通...

阿里云官方博客
3分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部