欢迎来到天天文库
浏览记录
ID:8966578
大小:35.50 KB
页数:2页
时间:2018-04-13
《java线程池以及future的应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、创建线程池,池里有多个线程,每个线程每次只读取某个字符串的一个字符,从第一个字符依次开始读取。全部读完后重新读。读三遍结束这个线程池。//线程池任务类publicclassMyTask3{//线程池引用privateExecutorServicees=null;//构造函数-创建带一定数量线程的线程池publicMyTask3(intnum){this.es=Executors.newFixedThreadPool(num);}//具体任务privateReadBuddha2rc=newReadBuddha2();//自定义方法-供外部调用publi
2、cObjectread()throwsException{//线程池(安排线程)执行任务-获取返回值后返回给调用者returnes.submit(rc);}//关闭线程池---线程池不关闭程序不会自行结束publicvoidshutdown(){if(es!=null){System.out.println("关闭线程池");es.shutdown();}}}//自定义任务-实现Callable接口-使调用的调用后可以使用返回值classReadBuddha2implementsCallable{//下标-从0开始privatestaticintin
3、dex=0;//字符数组privatestaticchar[]Buddha=newStringBuffer("法华经-提婆达多品:").append("天龙八部~人与非人~").append("皆遥见彼龙女成佛").toString().toCharArray();//读取次数privatestaticintreadCount=0;//具体任务--方法同步-保证线程池中的线程在某一时刻只会有一个来访问这个方法publicsynchronizedObjectcall(){//读取字符后--下标+1charc=Buddha[index++];//打印是哪
4、个线程读到了哪个字符System.out.println(Thread.currentThread().getName()+"readcahr="+c);//下标等于字符数组长度时为读完一次--下标再设为从0开始---读取次数+1if(index==Buddha.length){index=0;readCount++;//如果读取了3次--就返回"1"if(readCount==3){return"1";}}//默认都返回"0"return"0";}}调用//创建线程池任务类MyTask3t=newMyTask3(5);booleanb=false;
5、//调用多次任务for(inti=0;i<84;i++){//获取任务调用后的返回值Objecto=t.read();//如果返回值为"1"则不再循环-改变标志if(o.toString().equals("1")){b=true;break;}}//关闭线程池if(b){t.shutdown();}
此文档下载收益归作者所有