From 0f0d1659e74cdcbcc055428d31d4e0001df3c4f8 Mon Sep 17 00:00:00 2001 From: ShayanEdalatjoo Date: Thu, 25 Jun 2026 10:46:36 +0330 Subject: [PATCH 1/2] Adding timeout example --- .idea/.gitignore | 10 +++++++++ .idea/compiler.xml | 13 +++++++++++ .idea/encodings.xml | 7 ++++++ .idea/jarRepositories.xml | 20 +++++++++++++++++ .idea/misc.xml | 12 ++++++++++ .idea/vcs.xml | 6 +++++ .../lecture/multithreading/timeout/Main.java | 18 +++++++++++++-- .../multithreading/timeout/MyRunnable.java | 22 +++++++++++++++++++ 8 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/lecture/multithreading/timeout/MyRunnable.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..a590144 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..a9076af --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eba6e1f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/lecture/multithreading/timeout/Main.java b/src/main/java/lecture/multithreading/timeout/Main.java index 8258073..7e071df 100644 --- a/src/main/java/lecture/multithreading/timeout/Main.java +++ b/src/main/java/lecture/multithreading/timeout/Main.java @@ -1,10 +1,24 @@ package lecture.multithreading.timeout; +import java.util.Scanner; public class Main { public static void main(String[] args) { - // TODO + + Scanner scanner = new Scanner(System.in); + + System.out.println("you have 10 seconds: "); + System.out.print("enter your name: "); + + MyRunnable myRunnable = new MyRunnable(); + Thread thread = new Thread(myRunnable); + thread.setDaemon(true); + thread.start(); + + String name = scanner.nextLine(); + System.out.println("hello " + name); + + scanner.close(); } } - diff --git a/src/main/java/lecture/multithreading/timeout/MyRunnable.java b/src/main/java/lecture/multithreading/timeout/MyRunnable.java new file mode 100644 index 0000000..5ba28ba --- /dev/null +++ b/src/main/java/lecture/multithreading/timeout/MyRunnable.java @@ -0,0 +1,22 @@ +package lecture.multithreading.timeout; + +public class MyRunnable implements Runnable{ + + @Override + public void run(){ + + for (int i = 1; i <= 10 ; i++){ + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + System.out.println("thread was interrupted"); + } + + if(i == 10){ + System.out.println("time is up"); + System.exit(0); + } + + } + } +} \ No newline at end of file -- 2.54.0 From d13e52537fe8c49874b7de905c69c05a3d747880 Mon Sep 17 00:00:00 2001 From: ShayanEdalatjoo Date: Fri, 17 Jul 2026 21:51:37 +0330 Subject: [PATCH 2/2] Finishing TODO parts --- src/main/java/dev/Main.java | 28 +++++++++++++------ src/main/java/dev/model/Student.java | 10 +++++-- src/main/java/dev/service/StudentManager.java | 17 ++++++++++- src/main/java/dev/thread/StudentLoader.java | 15 ++++++++-- src/main/java/dev/utils/FileManager.java | 4 ++- 5 files changed, 59 insertions(+), 15 deletions(-) diff --git a/src/main/java/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..c53f863 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -37,28 +37,40 @@ public class Main { // Split data into 3 parts - List part1 = null; + int size = data.size(); - List part2 = null; - - List part3 = null; + List part1 = data.subList(0, size / 3); + List part2 = data.subList(size / 3, 2 * size / 3); + List part3 = data.subList(2 * size / 3, size); // TODO: - StudentLoader t1 = null; + StudentLoader t1 = new StudentLoader(part1); - StudentLoader t2 = null; + StudentLoader t2 = new StudentLoader(part2); - StudentLoader t3 = null; + StudentLoader t3 = new StudentLoader(part3); // TODO: // start() + t1.start(); + t2.start(); + t3.start(); + // join() + t1.join(); + t2.join(); + t3.join(); + // merge results + manager.addStudents(t1.getStudents()); + manager.addStudents(t2.getStudents()); + manager.addStudents(t3.getStudents()); + } case 2 -> { @@ -96,4 +108,4 @@ public class Main { } -} \ No newline at end of file +} diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..f72954e 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -47,7 +47,7 @@ public class Student { // Example: // return id % 97; - return 0; + return id % 97; } @Override @@ -58,13 +58,19 @@ public class Student { // Step 1: // Check null + if (obj == null) { + return false; + } + // Step 2: // Convert obj to Student + Student student = (Student) obj; + // Step 3: // Compare IDs - return false; + return this.id == student.id; } @Override diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..03787df 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -18,6 +18,8 @@ public class StudentManager { // Hint: // addAll() + students.addAll(newStudents); + } public Student searchStudent(int id) { @@ -28,6 +30,12 @@ public class StudentManager { // Compare IDs + for (Student student : students) { + if (student.getId() == id) { + return student; + } + } + return null; } @@ -39,6 +47,13 @@ public class StudentManager { // Remove student + Student student = searchStudent(id); + + if (student != null) { + students.remove(student); + return true; + } + return false; } @@ -52,4 +67,4 @@ public class StudentManager { } -} \ No newline at end of file +} diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..2630e59 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -1,7 +1,5 @@ package dev.thread; - - import dev.model.Student; import java.util.ArrayList; @@ -38,15 +36,26 @@ public class StudentLoader extends Thread { // TODO: // split line + String[] parts = line.split(","); + // TODO: // read values + int id = Integer.parseInt(parts[0]); + String name = parts[1]; + String major = parts[2]; + double gpa = Double.parseDouble(parts[3]); + // TODO: // create Student + Student student = new Student(id, name, major, gpa); + // TODO: // add to students list + students.add(student); + } } @@ -56,4 +65,4 @@ public class StudentLoader extends Thread { return students; } -} \ No newline at end of file +} diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..bea11a4 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -22,6 +22,8 @@ public class FileManager { // Add line to list + lines.add(line); + } reader.close(); @@ -29,4 +31,4 @@ public class FileManager { return lines; } -} \ No newline at end of file +} -- 2.54.0