From a7d2373bad017bac25bca2ef5b718a433415e7e8 Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Mon, 25 May 2026 21:18:39 +0330 Subject: [PATCH 1/5] implement Student.java --- src/main/java/dev/model/Student.java | 23 ++++--------------- .../multithreading/timeout/MyRunnable.java | 4 ++++ 2 files changed, 9 insertions(+), 18 deletions(-) create mode 100644 src/main/java/lecture/multithreading/timeout/MyRunnable.java diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..49751f3 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -41,30 +41,17 @@ public class Student { @Override public int hashCode() { - // TODO: - // Return custom hash - - // Example: - // return id % 97; - - return 0; + return id % 97; } @Override public boolean equals(Object obj) { - // TODO: + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; - // Step 1: - // Check null - - // Step 2: - // Convert obj to Student - - // Step 3: - // Compare IDs - - return false; + Student student = (Student)obj; + return id == student.id; } @Override 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..94e7093 --- /dev/null +++ b/src/main/java/lecture/multithreading/timeout/MyRunnable.java @@ -0,0 +1,4 @@ +package lecture.multithreading.timeout; + +public class MyRunnable { +} -- 2.54.0 From 6fc03bf1b065feb14d0ed0f524f3bf305fbe6847 Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Mon, 25 May 2026 21:20:30 +0330 Subject: [PATCH 2/5] implement StudentLoader.java --- src/main/java/dev/thread/StudentLoader.java | 26 ++++++++++----------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..16136f8 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -25,28 +25,26 @@ public class StudentLoader extends Thread { @Override public void run() { - // TODO: + for(String line : lines){ - /* - Example line: + if( line == null || line.isBlank()) continue; - 1001,Aryan,Computer Science,3.7 - */ + try { - for (String line : lines) { + String[] parts = line.split(","); - // TODO: - // split line - // TODO: - // read values + int id = Integer.parseInt(parts[0].trim()); + String name = parts[1].trim(); + String major = parts[2].trim(); + double gpa = Double.parseDouble(parts[3].trim()); - // TODO: - // create Student - // TODO: - // add to students list + students.add(new Student(id, name, major, gpa)); + } catch (Exception e) { + System.err.println("Error parsing line: " + line); + } } } -- 2.54.0 From 133437e9712cc8f240d57b53f5a44e78fb38e954 Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Mon, 25 May 2026 21:21:17 +0330 Subject: [PATCH 3/5] implement StudentManager.java --- src/main/java/dev/service/StudentManager.java | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..909c84c 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -11,35 +11,24 @@ public class StudentManager { public void addStudents(ArrayList newStudents) { - // TODO: - - // Merge students - - // Hint: - // addAll() + if(newStudents != null){ + this.students.addAll(newStudents); + } } public Student searchStudent(int id) { - // TODO: - - // Loop through students - - // Compare IDs + for(Student s : students) { + if(s.getId() == id ) return s; + } return null; } public boolean removeStudent(int id) { - // TODO: - - // Find student - - // Remove student - - return false; + return students.removeIf(s -> s.getId() == id); } public void printStudents() { -- 2.54.0 From 067aae2ee65cdc48392630bdc13db4ddd15f71cc Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Mon, 25 May 2026 21:22:06 +0330 Subject: [PATCH 4/5] implement FileManager.java --- src/main/java/dev/utils/FileManager.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..b23ed58 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -18,10 +18,7 @@ public class FileManager { while ((line = reader.readLine()) != null) { - // TODO: - - // Add line to list - + lines.add(line); } reader.close(); -- 2.54.0 From 8d27896aa6cc68c8960400a7a05b690a728fddde Mon Sep 17 00:00:00 2001 From: Parmis Jamami Date: Mon, 25 May 2026 21:22:34 +0330 Subject: [PATCH 5/5] complete code --- .idea/.gitignore | 10 ++++++ .idea/compiler.xml | 13 ++++++++ .idea/encodings.xml | 7 ++++ .idea/jarRepositories.xml | 20 ++++++++++++ .idea/misc.xml | 12 +++++++ .idea/vcs.xml | 6 ++++ src/main/java/dev/Main.java | 32 +++++++++++-------- .../lecture/multithreading/timeout/Main.java | 16 +++++++++- .../multithreading/timeout/MyRunnable.java | 17 +++++++++- 9 files changed, 118 insertions(+), 15 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 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/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..ebeab12 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -33,31 +33,37 @@ public class Main { List data = FileManager.loadStudents("students.txt"); - // TODO: + int size = data.size(); - // Split data into 3 parts + int partSize = size / 3; - List part1 = null; + List part1 = data.subList(0, partSize); - List part2 = null; + List part2 = data.subList(partSize, 2 * partSize); - List part3 = null; + List part3 = data.subList(2 * partSize, size); - // TODO: - StudentLoader t1 = null; - StudentLoader t2 = null; + StudentLoader t1 = new StudentLoader(part1); - StudentLoader t3 = null; + StudentLoader t2 = new StudentLoader(part2); - // TODO: + StudentLoader t3 = new StudentLoader(part3); - // 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()); + + System.out.println("Data loaded successfully."); } diff --git a/src/main/java/lecture/multithreading/timeout/Main.java b/src/main/java/lecture/multithreading/timeout/Main.java index 8258073..239c661 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 second: "); + System.out.println("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 index 94e7093..3ff59ca 100644 --- a/src/main/java/lecture/multithreading/timeout/MyRunnable.java +++ b/src/main/java/lecture/multithreading/timeout/MyRunnable.java @@ -1,4 +1,19 @@ package lecture.multithreading.timeout; -public class MyRunnable { +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); + } + } + } } -- 2.54.0