From d33ad01a6696de67006078bb5fa3376759bb293b Mon Sep 17 00:00:00 2001 From: deepcloudlabs Date: Fri, 22 Jul 2022 12:30:44 +0300 Subject: [PATCH] initial commit --- study-thread-programming/.classpath | 10 +++++ study-thread-programming/.project | 17 ++++++++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 14 +++++++ .../src/com/example/Exercise01.java | 40 +++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 study-thread-programming/.classpath create mode 100644 study-thread-programming/.project create mode 100644 study-thread-programming/.settings/org.eclipse.core.resources.prefs create mode 100644 study-thread-programming/.settings/org.eclipse.jdt.core.prefs create mode 100644 study-thread-programming/src/com/example/Exercise01.java diff --git a/study-thread-programming/.classpath b/study-thread-programming/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/study-thread-programming/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/study-thread-programming/.project b/study-thread-programming/.project new file mode 100644 index 0000000..b3577ce --- /dev/null +++ b/study-thread-programming/.project @@ -0,0 +1,17 @@ + + + study-thread-programming + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/study-thread-programming/.settings/org.eclipse.core.resources.prefs b/study-thread-programming/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/study-thread-programming/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/study-thread-programming/.settings/org.eclipse.jdt.core.prefs b/study-thread-programming/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/study-thread-programming/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/study-thread-programming/src/com/example/Exercise01.java b/study-thread-programming/src/com/example/Exercise01.java new file mode 100644 index 0000000..6c78250 --- /dev/null +++ b/study-thread-programming/src/com/example/Exercise01.java @@ -0,0 +1,40 @@ +package com.example; + +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; + +// Thread: i) Multi-tasking +// ii) Multi-core -> Parallel Programming +public class Exercise01 { + + public static void main(String[] args) throws InterruptedException { + System.out.println("Application is just started."); + var task1 = new LotteryTask(); + var task2 = new LotteryTask(); + var t1 = new Thread(task1); // Platform (OS) manages -> Kernel-level Thread + var t2 = new Thread(task2); + t1.start(); + t2.start(); + t1.join(); + System.out.println(task1.getNumbers()); + t2.join(); + System.out.println(task2.getNumbers()); + System.out.println("Application is done."); + } + +} + +class LotteryTask implements Runnable { + + private List numbers; + + @Override + public void run() { + numbers = ThreadLocalRandom.current().ints(1, 60).distinct().limit(6).sorted().boxed().toList(); + } + + public List getNumbers() { + return numbers; + } + +}