`

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

阅读更多
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
而后面一种方式 就不会出现这个错误
分享到:
评论

相关推荐

    jdk-7u80-windows-x64安装包

    jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-...

    jdk-8u311-windows-x64.exe

    jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u...

    jdk-7u67-linux-x64.tar包现在 linux jdk下载

    在这个场景中,我们关注的是`jdk-7u67-linux-x64.tar`文件,这是一款适用于64位Linux操作系统的JDK 7更新67版本的归档文件。 1. **JDK版本**: `7u67`指的是JDK 7的第67个更新。Java通常发布主要版本(如JDK 8、JDK ...

    jdk-7u51-windows-x64.zip

    标签“jdk”、“windows-x64”和“jdk-7u51-windows”进一步强调了这个文件的特性:它是一个用于64位Windows系统的Java JDK 7更新51。 压缩包内的文件“jdk-7u51-windows-x64.exe”是一个可执行文件,这是Windows...

    jdk-7u25-windows-i586.exe

    描述中的“jdk-7u25-windows-x64”暗示了同时存在一个64位版本的JDK,适应于运行在64位Windows系统上的用户。与32位版本相比,64位JDK通常能够利用更多的内存资源,对于处理大数据或内存密集型应用来说更为合适。 ...

    jdk7-aarch64-uos.tar.gz

    首先,JDK7是Oracle公司发布的Java平台标准版(Java Platform, Standard Edition)的第七个主要版本,它引入了多项重要的新特性和改进。例如,动态语言支持、Fork/Join框架、并发工具的增强以及新的编译器——CTW...

    jdk1.7 32位官方正式版 jdk-7u79-windows-i586 下载

    jdk-7u79-windows-i586.exe JDK7 稳定版 源官方下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    最新版jdk jdk-21-linux-x64-bin.deb

    与先前的JDK版本相比,jdk-21在性能、安全性和功能方面都进行了优化和增强。它提供了一套完整的工具和运行时环境,...此外,jdk-21还支持最新的Java特性和标准,确保开发者可以利用最新的技术和功能来构建创新的应用。

    JDK-7u80 Windows-X64

    "JDK-7u80 Windows-X64" 版本是针对64位Windows操作系统的特定更新,确保在该平台上能够高效地运行和开发Java程序。 **主要特性** 1. **多语言支持**:Java 7引入了对动态语言的支持,例如JavaScript和Python,...

    jdk-7u67-linux-x64.tar.gz

    1. **下载文件**:首先需要从官方或其他可信来源下载“jdk-7u67-linux-x64.tar.gz”文件。题目中的链接可以作为参考,但在实际操作中应确保链接的安全性和有效性。 2. **解压文件**:使用命令行或者图形界面工具将...

    jdk-7-windows-x32

    在这个场景中,我们关注的是"jdk-7-windows-x32",即32位版本的JDK 7,适用于那些运行32位操作系统的用户。 **1. JDK 7的主要特性** 1. **多线程并行GC(Garbage Collector)优化**:JDK 7对垃圾回收器进行了改进...

    jdk1.7 64位官方版 jdk-7u79-linux-x64.tar.gz

    1. 首先,下载名为“jdk-7u79-linux-x64.tar.gz”的压缩文件,这是针对Linux 64位系统的JDK 1.7的归档文件。 2. 使用解压命令(如tar -zxvf jdk-7u79-linux-x64.tar.gz)将内容解压到指定目录。 3. 设置环境变量,...

    jdk-8u172-windows-x64.exe、jdk-8u251-windows-x64.exe、jdk-14.0.1_windows-x64_bin.e

    本话题涉及三个不同版本的JDK:jdk-8u172-windows-x64.exe、jdk-8u251-windows-x64.exe以及jdk-14.0.1_windows-x64_bin.exe,分别对应Java 8的两个更新版本和Java 14的一个版本。 首先,让我们详细了解一下Java 8。...

    jdk-7u51-windows-x64

    jdk-7u51-windows-x64 JDK 64位,适用于WIN 64位系统JDK,全名是Java SE Development Kit,Java的研发环境,使用最广泛的Java SDK,JDK是研发与编译JAVA程序,必不可少的环境,64位的JDK解压出来就是jdk-7u51-...

    jdk-7-ea-bin-b24-windows-i586-04_dec_2007

    标题“jdk-7-ea-bin-b24-windows-i586-04_dec_2007”指的是Java Development Kit(JDK)的早期访问版本7的二进制发行版,构建号为b24,专为32位的Windows操作系统设计。这个版本发布于2007年12月4日,是Java开发工具...

    jdk-7u67-windows-x64.exe

    jdk-7u67-windows-x64.exe 资源:http://download.csdn.net/user/ajlgl/uploads 百度云:https://pan.baidu.com/s/1dESLQY9

    jdk-7u80-windows-x64.zip

    这个压缩包文件"jdk-7u80-windows-x64.zip"包含了安装JDK 7u80所需的可执行文件,即"jdk-7u80-windows-x64.exe",用于在Windows 64位环境下安装Java开发环境。 Java 7,也称为Java SE 7 (Java Platform, Standard ...

    jdk-7u25-windows-i586.zip

    首先,让我们理解"jdk-7u25-windows-i586.zip"这个文件的含义。"jdk"代表Java Development Kit,"7u25"表示这是JDK 7的第25个更新版本,"windows"意味着它是为Windows操作系统设计的,而"i586"则通常指的是32位...

    jdk8 jdk-8u251-windows-x64 百度网盘下载

    官方下载链接:https://download.oracle.com/otn/java/jdk/8u251-b08/3d5a2bb8f8d4428bbe94aed7ec7ae784/jdk-8u251-windows-x64.exe 觉得慢的话可以用txt里百度网盘下载,附件为网盘地址和提取码 jdk8 jdk-8u251-...

    jdk7 jdk-7u80-linux-x64 网盘下载

    tar -zxvf jdk-7u80-linux-x64.tar.gz ``` 这会创建一个名为`jdk1.7.0_80`的目录,其中包含了JDK的所有文件。 ##### 4.3 设置环境变量 为了让操作系统能够找到JDK,需要将JDK的路径添加到系统的环境变量中。可以...

Global site tag (gtag.js) - Google Analytics