diff --git a/java-good-story/src/main/java/org/jesperancinha/good/story/AlgorithmManager.java b/java-good-story/src/main/java/org/jesperancinha/good/story/AlgorithmManager.java index 7519e2a..bb2cee7 100644 --- a/java-good-story/src/main/java/org/jesperancinha/good/story/AlgorithmManager.java +++ b/java-good-story/src/main/java/org/jesperancinha/good/story/AlgorithmManager.java @@ -216,6 +216,15 @@ public List quickSort(List allWords) { return targetArray; } + + /** + * Make Virtual Thread go through states + * RUNNING + * PARKING + * RUNNING + * @param words + * @return + */ @Override public String makeTextFromWordFlow(List words) { return flowManager.readWordFlowBack(words); @@ -274,12 +283,19 @@ public List createIntersectionWordList(String sentenceLeft, String se /** * An example of an IO operation that doesn't seem to change the behaviour of Virtual Threads. - * + * Goes through state + * RUNNING + * PARKING * @param words * @return */ @Override public String saveWords(List words) { + try { + sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } final File tempFile; try { tempFile = File.createTempFile("test", "txt"); @@ -303,13 +319,18 @@ public String saveWords(List words) { /** * This method doesn't seem to be doing much, but notice that it is synchronized. * Synchronized in virtual threads, generates the need to Park threads while they wait + * Makes Virtual Thread go through states + * RUNNING + * PARKING + * PINNED + * RUNNING * * @param words * @return */ public synchronized String saveWordsParking(List words) { try { - sleep(1000); + sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } diff --git a/java-good-story/src/main/java/org/jesperancinha/good/story/GoodStoryJavaCommand.java b/java-good-story/src/main/java/org/jesperancinha/good/story/GoodStoryJavaCommand.java index 18d98a0..99c0369 100755 --- a/java-good-story/src/main/java/org/jesperancinha/good/story/GoodStoryJavaCommand.java +++ b/java-good-story/src/main/java/org/jesperancinha/good/story/GoodStoryJavaCommand.java @@ -113,14 +113,14 @@ public Integer call() throws Exception { log.info("===> Text size is {}", content.length()); performTest( - "Write to 1 file - No Parking - Virtual Thread", + "Write to 1 file - Yield - Virtual Thread", "saveWordsNio", "n/a", "n/a", () -> algorithmManager.saveWords(algorithmManager.findAllUniqueWords("I had problem B, but he understood problem A, then he created problem C out of problem A, said problem C was mine and presented me with a solution to problem C. My original problem was never solved and he ended up getting a promotion.")), () -> algorithmManager.saveWords(algorithmManager.findAllUniqueWords(content)), 2); performTest( - "Write to 1 file - Parking - Virtual Thread", + "Write to 1 file - Pinning - Yield - Virtual Thread", "saveWordsNio", "n/a", "n/a", () -> algorithmManager.saveWordsParking(algorithmManager.findAllUniqueWords("When I make meetings I always make sure they are technical, but tell me what did that with you")),