package test;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future; public class Test1 {
public static void main(String[] args) {
test2();
} public static void test1(){
int count = Runtime.getRuntime().availableProcessors();
ExecutorService service = Executors.newFixedThreadPool(count); A a = new A(); try {
for(int i = 0;i<count;i++){
service.execute(a);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(!service.isShutdown()){
service.shutdown();
}
}
} public static void test2(){
int count = Runtime.getRuntime().availableProcessors();
ExecutorService service = Executors.newFixedThreadPool(count); B b = new B(); List<Future<String>> list = new ArrayList<Future<String>>();
try {
for(int i = 0;i<count;i++){
Future<String> f = service.submit(b);
list.add(f);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(!service.isShutdown()){
service.shutdown();
}
} try {
String a = list.get(0).get();
System.out.println("a:"+a);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} System.out.println("next"); }
} class B implements Callable<String>{ @Override
public String call() throws Exception {
String a = "call";
Thread.sleep(10000);
System.out.println(a);
return a;
} }
class A implements Runnable {
private int ticketNum = 1;
private Object o = new Object(); @Override
public void run() { while(true){ synchronized (o) {
if(ticketNum>500000){
break;
} System.out.println(Thread.currentThread().getName()+"出售了第"+ticketNum+"张票"); ticketNum++;
} } } }

线程池demo的更多相关文章

  1. java写的简单通用线程池demo

    首先声明,代码部分来自网络. 1.入口DabianTest: package com.lbh.myThreadPool; import java.util.ArrayList; import java ...

  2. spring线程池配置

    源自:http://zjriso.iteye.com/blog/771706 1.了解 TaskExecutor接口 Spring的TaskExecutor接口等同于java.util.concurr ...

  3. Spring中线程池的应用

    多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了.spring封装了Java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说 ...

  4. java 线程池第一篇 之 ThreadPoolExcutor

    一:什么是线程池? java 线程池是将大量的线程集中管理的类,包括对线程的创建,资源的管理,线程生命周期的管理.当系统中存在大量的异步任务的时候就考虑使用java线程池管理所有的线程.减少系统资源的 ...

  5. 线程池及Executor框架

    1.为什么要使用线程池? ​ 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过 ...

  6. Java线程池 ThreadPoolExecutor类

    什么是线程池? java线程池是将大量的线程集中管理的类, 包括对线程的创建, 资源的管理, 线程生命周期的管理. 当系统中存在大量的异步任务的时候就考虑使用java线程池管理所有的线程, 从而减少系 ...

  7. 线程池与Callable接口

    定义: 一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 使用方法 public void lockDemo() throws Inter ...

  8. 基于线程池的多线程售票demo(原创)

    废话不多说,直接就开撸import org.springframework.util.StopWatch;import java.util.concurrent.*;/** * 基于线程池实现的多线程 ...

  9. 【Networking】(转)一个非常好的epoll+线程池服务器Demo

    (转)一个非常好的epoll+线程池服务器Demo Reply 转载自:http://zhangyafeikimi.javaeye.com/blog/285193 [cpp] /** 张亚霏修改 文件 ...

随机推荐

  1. @property用法总结

    1.当方法需要传入别的参数时,不能定义成@property. 比如_table(self, owner)

  2. boost生成json

    boost property_tree解析json文件相关文档如下:json_parser.basic_ptree json_parser:read_json(filename, ptree):用于将 ...

  3. Object.keys(),Object.values() 用法

    ES8新特性 Object.keys() 用法 返回键名组成的数组, let arr={ name:'js', sex:'body' } let keys=Object.keys(arr); cons ...

  4. 如何利用VMware安装XP系统

    如何利用VMware安装XP系统 百度经验 http://jingyan.baidu.com/article/215817f78ba0c51eda142322.html 1    运行分区工具 2   ...

  5. Java中输出正则表达式匹配到的内容

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class A { public static void ...

  6. 【UML】-NO.43.EBook.5.UML.1.003-【UML 大战需求分析】- 状态机图(State Machine Diagram)

    1.0.0 Summary Tittle:[UML]-NO.43.EBook.1.UML.1.003-[UML 大战需求分析]- 状态机图(State Machine Diagram) Style:D ...

  7. shell for 循环数组

    name=(aa bb) ;i<${#name[*]};i++)) do name=${name[i]} echo "$name" done

  8. 从零开始一起学习SLAM | SLAM有什么用?

    SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非 ...

  9. ElementNotVisibleException: Message: element not visible

    selenium自动化测试中,经常会报异常: 可能会有各种疑问,元素可以定位到啊.为什么报以下异常? ElementNotVisibleException: Message: element not ...

  10. 浅析Web API中FromBody属性

    比较如下两段代码及测试结果: public class ValuesController : ApiController { // POST api/<controller> public ...