java work stealing_Java线程池之WorkStealingPool,任务窃取算法

1 import java.io.IOException;

2 import java.util.concurrent.ExecutorService;

3 import java.util.concurrent.Executors;

4 import java.util.concurrent.TimeUnit;

5

6 /**

7 * 任务窃取算法

8 */

9 public class WorkStealingPool {

10

11 public static void main(String[] args) {

12

13 ExecutorService service = Executors.newWorkStealingPool();

14

15 System.out.println(Runtime.getRuntime().availableProcessors());

16

17 service.submit(new R(1)); //精灵线程

18 service.submit(new R(2));

19 service.submit(new R(2));

20 service.submit(new R(2));

21 service.submit(new R(2));

22

23 try {

24 System.in.read();

25 //由于产生的是精灵线程(守护线程、后台线程),主程序不阻塞的话看不到打印信息

26 } catch (IOException e) {

27 e.printStackTrace();

28 }

29

30 }

31

32 static class R implements Runnable {

33

34 int time;

35

36 R(int runTime) {

37 this.time = runTime;

38 }

39

40 @Override

41 public void run() {

42 try {

43 TimeUnit.SECONDS.sleep(time);

44 } catch (InterruptedException e) {

45 e.printStackTrace();

46 }

47 System.out.println(time + " " + Thread.currentThread().getName());

48 }

49 }

50

51 2df262dc8585a3afd3ad10f154392c92.png

newWorkStealingPool线程池的实现用到了ForkJoinPool,用到了分而治之,递归计算的算法,

标签:java,service,import,submit,线程,new,Java,WorkStealingPool

来源: https://www.cnblogs.com/mxh-java/p/12246488.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于keepalived 实现VIP转移,lvs,nginx的高可用

一、Keepalived 高可用集群的解决方案 二、VRRP的有限状态机 三、利用keepalived 实现主从VIP的切换 四、 实现在状态转变的时候自定义进行通知, 五、 实现负载均衡 六:实现nginx的高可用 一、Keepalived 高可用集群的解决方案 最初的诞生是为ipvs提供高…

MySQL数据库数据分开存储

MySQL数据默认存储在ibdata1文件中。如果要每张表使用单独的innoDB文件,修改my.ini文件,增加下面配置 innodb_file_per_table然后重启服务

data数值设置 vue_怎么改变vue中data的数据

v圈调直年情,量的单框来离理这接法清都的为ar app3 new 需朋朋支带不新器功几的事上为做的和时意后Vue({el:#item,data:{item_data:[],},computed:{},methods: {}});我想点击的时候改变vue的item_data这个是数据,能打印出来就是在页面渲染不goods_box是…

java---sychronized的深入理解

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A…

java 数组排序面试题_Java面试宝典_基础编程练习题_数组排序插值(一)

题目题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。代码…

js刷新页面

location.reload() 和 location.replace()的区别和应用: reload 方法,该方法强迫浏览器刷新当前页面。语法: location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取…

MySQL Incorrect string value: 有可能是字符串长度不够了

Incorrect string value: \xE5\xBE\x97\xE4\xBB\xB7... for column Content at row 1 1.字符集全部调整为utf8。2.超出字符串长度。各字段类型长度text 2^16-1mediumtext 2^16-1longtext 2^32-1

PHP独特学习模式_php基础知识

一.PHP介绍PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、JAVA、Perl以及PHP自创的语法。利于学习,应用广泛,主要适用于…

CentOS x64 安装gcc

挂载CentOS-6.2-x86_64-bin-DVD1.iso进入光盘Package目录rpm -ivh kernel-headers-2.6.32-220.el6.x86_64.rpmrpm -ivh libgcc-4.4.6-3.el6.x86_64.rpmrpm -ivh mpfr-2.4.1-6.el6.x86_64.rpmrpm -ivh cpp-4.4.6-3.el6.x86_64.rpmrpm -ivh nscd-2.12-1.47.el6.x86_64.rpmrpm -iv…

hql 语法详解

HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查…

php进程状态进度,PHP监控进程状态,完成掉线自动重启

1. 利用Shell脚本实现#!/bin/bashPORT0while [ true ];doread -p "please enter the port that you want to minitor:" portif [ $port -gt 65536 ] || [ $port -lt 1 ];thenecho "the port you enter is not correctly"elsePORT$portbreakfidonewhile [ t…

js判断函数是否存在

try { if(typeof(eval(funcName))"function") {funcName();}}catch(e){//alert("not function"); }

HDU 1048 [The Hardest Problem Ever] 字符串处理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid1048 题目大意:对一串字符串进行加密:每个英文字母变为字母表此后第五位,其他字符无变化。给出密码,要求翻译为原串。 关键思想:字符串处理 代码如下&…

Win8 Consumer Preview 8250 + VS11 体验

开始界面 桌面,背景换成金鱼了,安装的第一步也是这条鱼……VS11的安装界面,变化好大 IIS8IE10

php 调用微信收货地址,php版微信自动获取收货地址api用法示例

微信公众平台现在是越来越强大了,我们可以通过各种api接口来与平台对接获取对应的数据了,下面来看一个由php实现的微信自动获取收货地址api程序,具体如下.关于接口的说明我就不介绍了,在官方可以看到下面只看处理程序.public function get_address_api() {$APPIDC(APPID);$SCRE…

jQuery常用的层次选择器

常用层次选择器 儿子 手机品牌 苹果华为vivo电脑品牌 苹果联想戴尔销量排行 vivo苹果华为<!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>常用层次选择器</title><script src"scripts/j…

C# 获取gzip网页解压处理

Stream responseStream;try{WebResponse wr httpRequest.GetResponse();responseStream wr.GetResponseStream();if (wr.Headers["Content-Encoding"] "gzip")//gzip解压处理{MemoryStream msTemp new MemoryStream();GZipStream gzs new GZipStream(…

php分页排序不变化,php – 计算已排序分页的给定记录的跳过值

我正在尝试使用php驱动程序计算mongo db集合中给定记录的跳过值.因此,获取给定记录,找出整个集合中该记录的索引.这可能吗&#xff1f;目前我正在选择所有记录并手动对结果数组进行索引.解决方法:这称为“前向分页”,这是一种概念,可用于在使用“已排序”结果时以“向前”方向“…

caffe源码阅读(1)_整体框架和简介(摘录)

原文链接&#xff1a;https://www.zhihu.com/question/27982282 1.Caffe代码层次。回答里面有人说熟悉Blob&#xff0c;Layer&#xff0c;Net&#xff0c;Solver这样的几大类&#xff0c;我比较赞同。我基本是从这个顺序开始学习的&#xff0c;这四个类复杂性从低到高&#xff…