packageThread.Abort;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.TimeUnit;//计数类

class Count {//DATA

private int count = 0;private Random rand = new Random(47);// public synchronized intincrement() {int temp =count;if(rand.nextBoolean())

Thread.yield();return (count = ++temp);

}public synchronized intvalue() {returncount;

}

}//动作类

class Entrance implementsRunnable {private static Count count = newCount();private static List entrances = new ArrayList();private int number = 0;private final intid;private static volatile boolean canceled = false;public static voidcancel() {

canceled= true;

}public Entrance(intid) {this.id =id;

entrances.add(this);

}

@Overridepublic voidrun() {while (!canceled) {synchronized (this) {++number;

}

System.out.println(this + " Total:" + count.increment());//要显示的数值都要通过同步方法读取才准确

try{

TimeUnit.MICROSECONDS.sleep(100);

}catch(Exception e) {

System.out.println("sleep interrupted");

}

}

System.out.println("Stopping " + this);

}public synchronized intgetValue() {returnnumber;

}publicString toString() {return "Entrance " + id + ": " +getValue();

}public static intgetTotalCount() {returncount.value();

}public static intsumEntrances() {int sum = 0;for(Entrance entrance : entrances) {

sum+=entrance.getValue();

}returnsum;

}

}public classOrnamentalGarden {public static void main(String[] args) throwsInterruptedException {

ExecutorService exec=Executors.newCachedThreadPool();for (int i = 0; i < 5; i++) {

exec.execute(newEntrance(i));

}

TimeUnit.SECONDS.sleep(3);

Entrance.cancel();

exec.shutdown();if (!exec.awaitTermination(250, TimeUnit.MILLISECONDS))

System.out.println("Some tasks were not terminated!");

System.out.println("Total:" +Entrance.getTotalCount());

System.out.println("Sum of Entrances:" +Entrance.sumEntrances());

}

}

java 多线程数量_java多线程之计算数量相关推荐

  1. java的多线程机制_Java多线程开发(一)| 基本的线程机制

    0. 前言 Java 为了实现跨平台,在语言层面上实现了多线程.我们只需要熟悉 Java 这一套多线程机制就行了,比 C/C++ 要容易多了. 1. 定义任务 我们编写程序,最终是为了完成特定的任务. ...

  2. java 多线程 总结_Java 多线程总结

    昨天熬了个通宵,看了一晚上的视频,把java 的多线程相关技术重新复习了一遍,下面对学习过程中遇到的知识点进行下总结. 首先我们先来了解一下进程.线程.并发执行的概念: 进程是指:一个内存中运行的应用 ...

  3. java 高效的多线程同步_java多线程的同步和异步

    java多线程的同步和异步 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算 ...

  4. java线程钥匙_Java多线程并发编程/锁的理解

    一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...

  5. java线程 教程_Java多线程系列教程

    Java多线程系列教程 多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容是对Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), n ...

  6. java线程入门_java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  7. java多线程代码_java多线程实例代码详解

    原文:http://blog.csdn.net/paranoidyang/article/details/70184523 作者:Paranoidyang 线程与进程的区别 (1)程序是一段静态的代码 ...

  8. java 线程 组成_java多线程

    一:基本知识点 1.1线程与进程区别: 1.进程是资源分配的最小单位,线程是CPU调度的最小单位 2.一个进程由一个或多个线程组成 3.进程之间相互独立,每个进程都有独立的代码和数据空间,但同一进程下 ...

  9. java线程栅栏_Java 多线程基础 - CyclicBarrier

    我的博客 转载请注明原创出处. 序 java.util.concurrent包里有几个能帮助人们管理相互合作的线程集的类,为多线程常见的应用场景预置了抽象好的类库.在遇到这些应用场景时应该直接重用合适 ...

最新文章

  1. Vue+DataTables warning:table id=xxxx -Cannot reinitialize DataTable.报错解决方法
  2. Python-EEG处理和事件相关电位(ERP)
  3. 海蜘蛛如何手工升级到最新版
  4. NFS服务器是什么?(Network File System 网络文件系统)(远程主机间 mount 挂载目录)(ubuntu:nfs-kernel-server)
  5. cannot write file to virtual machine aborting the file copy operation.
  6. QT 之 TCP/IP 服务器和客户端(一)
  7. C语言正函数nosign,C语言标准库函数查询手册.docx
  8. mysql5.5客户端_MySQL 5.5/5.6——概述 MySQL 客户端程序
  9. java 课程设计数据库_人事管理系统(java数据库课程设计)+SQL数据库
  10. 常见数据分析误区有哪些
  11. 网络安全学习--007--漏洞分析简介
  12. ADS实验报告二:滤波器的仿真设计
  13. 移植emwin到stm32f205上卡死在gui_init();
  14. 数值作业:改进欧拉法求常微分方程C语言代码
  15. 斯特陵往事(转自清韵论坛 冯·迪特里施专栏)
  16. 基于Android 的手机传感器检测
  17. [AHK]新浪实时股票数据接口
  18. 怎么把dicom数据转成nifty数据
  19. vmware安装虚拟机加配置虚拟机网卡
  20. typec扩展坞hdmi没反应_解决电脑接口不足难题,实测绿联九合一type-c扩展坞到底有多强...

热门文章

  1. 【转载】[BetterExplained]为什么你应该(从现在开始就)写博客
  2. Comparison of relational database management systems
  3. keil5建立多文件的时候为什么总是出错
  4. MPI编程的常用接口速查
  5. ligerui tree mysql_LigerUi中下拉框一级树tree数据库读取代码示例!
  6. [云炬创业基础笔记]第五章创业计划评估17
  7. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例
  8. 深入理解C++类的构造函数与析构函数
  9. 怎样写出可维护的面向对象javascript(译)
  10. 注入工具的原理和开发