|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
ExecutorService接口承继了Executor接口,界说了一些性命周期的办法- publicinterface
- ExecutorServiceextendsExecutor{
- voidshutdown();
- List<Runnable>shutdownNow();
- booleanisShutdown();
- booleanisTerminated();
- booleanawaitTermination(longtimeout,TimeUnitunit)
- throwsInterruptedException;
- }
复制代码 本文,我们一一剖析内里的每一个办法。
起首,我们必要创立一个义务代码,这段义务代码次要是随机天生含有10个字符的字符串- /**
- *随机天生10个字符的字符串
- *@authordream-victor
- *
- */
- publicclassTask1implementsCallable<String>{
- @Override
- publicStringcall()throwsException{
- Stringbase="abcdefghijklmnopqrstuvwxyz0123456789";
- Randomrandom=newRandom();
- StringBuffersb=newStringBuffer();
- for(inti=0;i<10;i++){
- intnumber=random.nextInt(base.length());
- sb.append(base.charAt(number));
- }
- returnsb.toString();
- }
- }
复制代码 然后,我们还必要一个长义务,这里我们默许是甜睡10秒- /**
- *长工夫义务
- *
- *@authordream-victor
- *
- */
- publicclassLongTaskimplementsCallable<String>{
- @Override
- publicStringcall()throwsException{
- TimeUnit.SECONDS.sleep(10);
- return"success";
- }
- }
复制代码 OK,一切后期筹办终了,上面我们就来剖析一下ExecutorService接口中和性命周期有关的这些方法:
1、shutdown办法:这个办法会光滑地封闭ExecutorService,当我们挪用这个办法时,ExecutorService中断承受任何新的义务且守候已提交的义务实行完成(已提交的义务会分两类:一类是已经在实行的,另外一类是还没有入手下手实行的),当一切已提交的义务实行终了后将会封闭ExecutorService。这里我们先不举例鄙人面举例。
2、awaitTermination办法:这个办法有两个参数,一个是timeout即超不时间,另外一个是unit立即间单元。这个办法会使线程守候timeout时长,当凌驾timeout工夫后,会监测ExecutorService是不是已封闭,若封闭则前往true,不然前往false。一样平常情形下会和shutdown办法组合利用。比方:- ExecutorServiceservice=Executors.newFixedThreadPool(4);
- service.submit(newTask1());
- service.submit(newTask1());
- service.submit(newLongTask());
- service.submit(newTask1());
- service.shutdown();
- while(!service.awaitTermination(1,TimeUnit.SECONDS)){
- System.out.println("线程池没有封闭");
- }
- System.out.println("线程池已封闭");
复制代码 这段代码中,我们在第三次提交了一个长义务,这个义务将实行10秒甜睡,紧随着实行了一次shutdown()办法,假定:这时候ExecutorService被当即封闭,上面挪用service.awaitTermination(1,TimeUnit.SECONDS)办法时应当前往true,程序实行了局应当只会打印出:“线程池已封闭”。可是,实在的运转了局以下:- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池没有封闭
- 线程池已封闭
复制代码 这申明我们假定毛病,service.awaitTermination(1,TimeUnit.SECONDS)每隔一秒监测一次ExecutorService的封闭情形,而长义务恰好必要实行10秒,因而会在前9秒监测时ExecutorService为未封闭形态,而在第10秒时已封闭,因而第10秒时输入:线程池已封闭。这也考证了shutdown办法封闭ExecutorService的前提。
<p>
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 |
|