当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

jdk7 新特性测试-1 -(demo来源于网上)

发表于: 2014-12-16   作者:cuityang   来源:转载   浏览次数:
摘要: package jdk7; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class Jdk7Test { public static void main(String[] args) t
package jdk7;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Jdk7Test {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println(switchString("Monday"));

//抛出异常
catchTest();
}

//Switch语句支持string类型  
public static String switchString(String dayOfWeekArg){
String typeOfDay; 
        switch (dayOfWeekArg) { 
            case "Monday": 
                typeOfDay = "Start of work week"; 
                break; 
            case "Tuesday": 
            case "Wednesday": 
            case "Thursday": 
                typeOfDay = "Midweek"; 
                break; 
            case "Friday": 
                typeOfDay = "End of work week"; 
                break; 
            case "Saturday": 
            case "Sunday": 
                typeOfDay = "Weekend"; 
                break; 
            default: 
                throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg); 
        } 
        return typeOfDay; 
}

//1.4 catch
public static void catchTest( ) throws Exception {
String zipFileName = "";
try { 
    System.out.println("error");
    if(true){
    throw new IOException();
    }else{
    throw new SQLException();
    }
} catch (IOException|SQLException ex) { 
    throw ex; 

}

//1.6 泛型实例的创建可以通过类型推断来简化 可以去掉后面new部分的泛型类型,只用<>就可以了
public static void listTest( ) throws Exception {
List<String> list = new ArrayList<>(); 
list.add("A"); 
}


}

fork-join

package jdk7;

import java.util.Date;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.RecursiveTask;



//最大的增强,充分利用多核特性,将大问题分解成各个子问题,
//由多个cpu可以同时解决多个子问题,最后合并结果,继承RecursiveTask,
//实现compute方法,然后调用fork计算,最后用join合并结果

//算法很简单,在100个数以内的我们直接迭代计算和值。否则采用Fork/Join框架分治计算。
public  class PlusPlus extends RecursiveTask<Long>{ 
    private static final int THRESHOLE=100; 
    private int start; 
    private int end; 
    public PlusPlus(int start,int end){ 
        this.start=start; 
        this.end=end; 
    } 
     
    @Override 
    protected Long compute() { 
        // TODO Auto-generated method stub 
    Long sum=0l; 
        if(end-start<THRESHOLE){ 
            for(int i=start;i<=end;i++){ 
                sum+=i; 
            } 
        }else{ 
            int middle=(start+end)/2; 
            PlusPlus left=new PlusPlus(start, middle); 
            PlusPlus right=new PlusPlus(middle+1, end); 
             
            left.fork(); 
            right.fork(); 
            sum=left.join()+right.join(); 
        } 
        return sum; 
    } 
   
    public Long sumall(){
    long sum=0;
    for(int i=start;i<=end;i++){
    sum = sum+ i;
    }
    return sum;
    }
     
    public static void main(String args[]) throws InterruptedException, ExecutionException{ 
    long t1 = new Date().getTime();
   
        ForkJoinPool pool=new ForkJoinPool(); 
        Future<Long> result=pool.submit(new PlusPlus(1, 800000)); 
       
        long t2 = new Date().getTime();
        long sum = new PlusPlus(1, 800000).sumall(); 
        long t3 = new Date().getTime();
        System.out.println(result.get()+"耗时:"+(t2-t1)); 
        System.out.println(sum+"耗时:"+(t3-t2)); 
//        System.err.println(10001*5000); 
    } 
     



320000400000耗时:2
320000400000耗时:3

注:
使用fork 有个局限   800000 变成 1000000时候 出现  OutOfMemory
而后面一种方式 就不会出现这个错误

jdk7 新特性测试-1 -(demo来源于网上)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
对于框架的原理,可以阅读 Doug Lea 的文章“A Java Fork/Join Framework”:了解 Fork/Join 模式的
对于框架的原理,可以阅读 Doug Lea 的文章“A Java Fork/Join Framework”:了解 Fork/Join 模式的
一般情况下,我们可以结合利用java.net.MulticastSocket和java.net.DatagramPacket对象来实现组播通
WIN7远程桌面连接方法! 首先,我们要在被连接的计算机上进行设置。使用鼠标右键单击“计算机”图标
本系列文章专门针对具有 JSR 168 Portlet 开发基础,并且想了解 JSR 286 Portlet 新特性和开发流程
著名科技博客博主Taranfx撰文:Java 1.4到1.5的修改很大,在编译compile-time 方面提升很大,Java 6
著名科技博客博主Taranfx撰文:Java 1.4到1.5的修改很大,在编译compile-time 方面提升很大,Java 6
著名科技博客博主Taranfx撰文:Java 1.4到1.5的修改很大,在编译compile-time 方面提升很大,Java 6
1.1 mysql-cluster简介 简单的说,MySQLCluster实际上是在无共享存储设备的情况下实现的一种完全分
1.1 mysql-cluster简介 简单的说,MySQLCluster实际上是在无共享存储设备的情况下实现的一种完全分
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号