-
Bug
-
Resolution: Duplicate
-
P4
-
None
-
9.0.4
-
x86_64
-
windows_10
FULL PRODUCT VERSION :
9.0.4+11
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.16299.309]
A DESCRIPTION OF THE PROBLEM :
Creating parallel streams to try to process Json strings and submitting to a FixedThreadPool executor service.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile source
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Information:java: An exception has occurred in the compiler (9.0.4). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Information:java: java.lang.NullPointerException
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$CheckUpperBounds.apply(Infer.java:951)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer.doIncorporation(Infer.java:1122)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$GraphSolver.solve(Infer.java:1658)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.solve(InferenceContext.java:475)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.solve(InferenceContext.java:482)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$PartiallyInferredMethodType.check(Infer.java:341)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ResolvedMemberType.overloadCheck(ArgumentAttr.java:560)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ArgumentType.complete(ArgumentAttr.java:352)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:326)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:312)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.checkSpeculative(ArgumentAttr.java:154)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ExplicitLambdaType.checkLambdaCompatible(ArgumentAttr.java:524)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ExplicitLambdaType.overloadCheck(ArgumentAttr.java:509)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1047)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:874)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:774)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:883)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:617)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1566)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1725)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1794)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1768)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$10.doLookup(Resolve.java:2627)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3241)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3491)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2624)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2618)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3574)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3453)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2104)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:653)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1911)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3425)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:693)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1155)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:950)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:723)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:742)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1203)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1014)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1094)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:866)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4562)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4454)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4383)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:4328)
Information:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1329)
Information:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:959)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)
Information:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:198)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:453)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:317)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:244)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:202)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1314)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:991)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1063)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:954)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:787)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:376)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:183)
Information:java: at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)
Information:java: at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:308)
Information:java: at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:137)
Information:java: at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:235)
Information:java: at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
Information:java: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
Information:java: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
Information:java: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
Information:java: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
Information:java: at java.base/java.lang.Thread.run(Thread.java:844)
Information:java: Errors occurred while compiling module 'func_test_main'
Information:javac 9.0.4 was used to compile java sources
Information:3/28/2018 11:34 PM - Compilation completed with 1 error and 0 warnings in 2s 696ms
Error:java: Compilation failed: internal java compiler error
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
##### build.gradle:
group 'pnts'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
}
##### settings.gradle:
rootProject.name = 'func_test'
##### src/main/java/Main/JsonParseGo.java:
package Main;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static Main.RandomJsonGen.getRandomJsonGenerator;
public class JsonParseGo {
public static final int numJsons = 100000;
public static final int numThreads = 4;
public static void main (String[] args) throws ExecutionException, InterruptedException {
Gson gson = new GsonBuilder().create();
Supplier<String> gen = getRandomJsonGenerator(1);
List<String> strings = Stream.generate(gen)
.limit(100)
.collect(Collectors.toCollection(ArrayList::new));
List<JsonElement> jsonsSeq = new ArrayList<>();
for (String str : strings) {
jsonsSeq.add(gson.fromJson(str, JsonElement.class));
}
ExecutorService threadPool = Executors.newFixedThreadPool(numThreads);
List<JsonElement> jsonsPar = threadPool.submit(() -> {
return strings.parallelStream()
.map((str) -> gson.fromJson(str, JsonElement.class))
.collect(Collectors.toCollection(ArrayList::new));
}).get();
return;
}
}
##### src/main/java/Main/RandomJsonGen.java:
package Main;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class RandomJsonGen {
private static final String chars = "ABCDEF";
private static final String nums = "0123456789";
public static Supplier<String> getRandomJsonGenerator(long seed) {
Random random = new Random(seed);
Supplier<String> stringGen = () -> {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5 ; ++i) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
for (int i = 0; i < 5 ; ++i) {
sb.append(nums.charAt(random.nextInt(nums.length())));
}
return sb.toString();
};
Supplier<Long> numberGen = () -> {
long num = 0;
for (int i = 0; i < 8 ; ++i) {
num = num * 10 + random.nextInt(10);
}
return num;
};
return () -> {
int numStrings = random.nextInt(6) + 1;
int numInts = random.nextInt(6) + 1;
StringBuilder sb = new StringBuilder("[[");
for (int i = 0; i < numStrings - 1; ++i) {
sb.append("\"").append(stringGen.get()).append("\",");
}
sb.append("\"").append(stringGen.get()).append("\"],[");
for (int i = 0; i < numInts - 1; ++i) {
sb.append(numberGen.get()).append(",");
}
sb.append(numberGen.get()).append("]]");
return sb.toString();
};
}
public static void main(String[] args) {
Supplier<String> gen = getRandomJsonGenerator(1);
List<String> strings = Stream.generate(gen)
.limit(100)
.collect(Collectors.toCollection(ArrayList::new));
return;
}
}
---------- END SOURCE ----------
9.0.4+11
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.16299.309]
A DESCRIPTION OF THE PROBLEM :
Creating parallel streams to try to process Json strings and submitting to a FixedThreadPool executor service.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile source
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Information:java: An exception has occurred in the compiler (9.0.4). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Information:java: java.lang.NullPointerException
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$CheckUpperBounds.apply(Infer.java:951)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer.doIncorporation(Infer.java:1122)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$GraphSolver.solve(Infer.java:1658)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.solve(InferenceContext.java:475)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.solve(InferenceContext.java:482)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Infer$PartiallyInferredMethodType.check(Infer.java:341)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ResolvedMemberType.overloadCheck(ArgumentAttr.java:560)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ArgumentType.complete(ArgumentAttr.java:352)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:326)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:312)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.checkSpeculative(ArgumentAttr.java:154)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ExplicitLambdaType.checkLambdaCompatible(ArgumentAttr.java:524)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ExplicitLambdaType.overloadCheck(ArgumentAttr.java:509)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1047)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:874)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:774)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:883)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:617)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1566)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1725)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1794)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1768)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$10.doLookup(Resolve.java:2627)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3241)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3491)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2624)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2618)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3574)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3453)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2104)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:653)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1911)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3425)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:693)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1155)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:950)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:723)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:742)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1203)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1014)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1094)
Information:java: at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:866)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4562)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4454)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4383)
Information:java: at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:4328)
Information:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1329)
Information:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:959)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)
Information:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)
Information:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:198)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:453)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:317)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:244)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:202)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1314)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:991)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1063)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:954)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:787)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:376)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:183)
Information:java: at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)
Information:java: at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:308)
Information:java: at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:137)
Information:java: at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:235)
Information:java: at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
Information:java: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
Information:java: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
Information:java: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
Information:java: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
Information:java: at java.base/java.lang.Thread.run(Thread.java:844)
Information:java: Errors occurred while compiling module 'func_test_main'
Information:javac 9.0.4 was used to compile java sources
Information:3/28/2018 11:34 PM - Compilation completed with 1 error and 0 warnings in 2s 696ms
Error:java: Compilation failed: internal java compiler error
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
##### build.gradle:
group 'pnts'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
}
##### settings.gradle:
rootProject.name = 'func_test'
##### src/main/java/Main/JsonParseGo.java:
package Main;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static Main.RandomJsonGen.getRandomJsonGenerator;
public class JsonParseGo {
public static final int numJsons = 100000;
public static final int numThreads = 4;
public static void main (String[] args) throws ExecutionException, InterruptedException {
Gson gson = new GsonBuilder().create();
Supplier<String> gen = getRandomJsonGenerator(1);
List<String> strings = Stream.generate(gen)
.limit(100)
.collect(Collectors.toCollection(ArrayList::new));
List<JsonElement> jsonsSeq = new ArrayList<>();
for (String str : strings) {
jsonsSeq.add(gson.fromJson(str, JsonElement.class));
}
ExecutorService threadPool = Executors.newFixedThreadPool(numThreads);
List<JsonElement> jsonsPar = threadPool.submit(() -> {
return strings.parallelStream()
.map((str) -> gson.fromJson(str, JsonElement.class))
.collect(Collectors.toCollection(ArrayList::new));
}).get();
return;
}
}
##### src/main/java/Main/RandomJsonGen.java:
package Main;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class RandomJsonGen {
private static final String chars = "ABCDEF";
private static final String nums = "0123456789";
public static Supplier<String> getRandomJsonGenerator(long seed) {
Random random = new Random(seed);
Supplier<String> stringGen = () -> {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5 ; ++i) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
for (int i = 0; i < 5 ; ++i) {
sb.append(nums.charAt(random.nextInt(nums.length())));
}
return sb.toString();
};
Supplier<Long> numberGen = () -> {
long num = 0;
for (int i = 0; i < 8 ; ++i) {
num = num * 10 + random.nextInt(10);
}
return num;
};
return () -> {
int numStrings = random.nextInt(6) + 1;
int numInts = random.nextInt(6) + 1;
StringBuilder sb = new StringBuilder("[[");
for (int i = 0; i < numStrings - 1; ++i) {
sb.append("\"").append(stringGen.get()).append("\",");
}
sb.append("\"").append(stringGen.get()).append("\"],[");
for (int i = 0; i < numInts - 1; ++i) {
sb.append(numberGen.get()).append(",");
}
sb.append(numberGen.get()).append("]]");
return sb.toString();
};
}
public static void main(String[] args) {
Supplier<String> gen = getRandomJsonGenerator(1);
List<String> strings = Stream.generate(gen)
.limit(100)
.collect(Collectors.toCollection(ArrayList::new));
return;
}
}
---------- END SOURCE ----------
- duplicates
-
JDK-8178427 NPE in Infer$CheckUpperBounds
- Resolved