From cae224f7ef9570404c682e0550f13b18f18657ff Mon Sep 17 00:00:00 2001 From: Makeshkumar B Date: Fri, 11 Aug 2023 00:23:19 +0530 Subject: [PATCH 1/4] Implemented multi-threaded quick sort --- .../com/scaler/quicksort/QuickRunner.java | 26 ++++++++++ .../com/scaler/quicksort/QuickSorter.java | 48 ++++++++++++++++++ .../os/target/classes/com/scaler/App.class | Bin 1162 -> 1473 bytes .../scaler/producerconsumer/UnitOfWork.class | Bin 311 -> 311 bytes 4 files changed, 74 insertions(+) create mode 100644 os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java create mode 100644 os/code/os/src/main/java/com/scaler/quicksort/QuickSorter.java diff --git a/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java b/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java new file mode 100644 index 0000000..100e998 --- /dev/null +++ b/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java @@ -0,0 +1,26 @@ +package com.scaler.quicksort; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class QuickRunner { + + public static void main(String[] args) { + int[] arr = {10, 9, 8, 7, 1, 2, 3, 4}; + + ExecutorService executor = Executors.newCachedThreadPool(); + QuickSorter sorter = new QuickSorter(arr, executor,0,arr.length-1); + executor.execute(sorter); + try { + executor.awaitTermination(3, TimeUnit.SECONDS); + } catch (Exception e) { + System.out.println("Something wrong happened"); + } + executor.shutdown(); + + for(int i=0; i+foxj5IvJXmaGdzA}XL56fi+ZybA`eQ3MSa4Hb*>X-Gy`v)N7UPOy0QBYgHn zU-bbjt?~o>2tUNK)Slf?ZZzdq&82(0PxtBRnXf-TeF1O<>pCKcYUnc1jTl4X1>fO0 zi`!ed)y)^8A{k=yrftfb4AFF^97hl08gv7PV6>T+c0DQTWaTu;X|U)6nNDuaHEmgv zuHf~&jz08jNEkSbfi~~;Z8E4b^j4a#D{OfnA4z8dBtNA<>%$x|Fo>fJ+Ln+jye=5p zO(~*jZ{-Jw<#7W;7-l$D=QUAq>57Bn)OZLt}6tFfuci1%G@=T+){SQZIcR{D7M4o38&6YD$ddLvko;c zAJk8{3@5_Qe^rTqVu4B}@TX~89m2p&8cP(8yIYh_ni z--Bi9%SB;XPU@xOTGedIzq+ED+T2ZDXAH)YZ40+xanBQ;hBbzXe>iudqTva{=>JXW zI0N1o!v%Vh)E5DDBw{pQA}L2JqqTc#AMCyV`!dbyHxQ?%3@`!%T*WnCH;XyaDCc*G zqKnqK570iMcMr)=I0o!tBsxEm(BI(nXN+x(e8ic3WR^dpZ)18N=T>I+kbTA2+h5;Q zz$jF}QD`))7p#{Kz7G@VM-~ZOBzYDCej-y8Y=Y$L$Pr!r*>}47Q4~lK!9CokwTDa>XcVzRl1{r-JVpsazX1bdbxi;O literal 1162 zcmZux+foxj5IsWz8`cG4fFOiRyeAk~72}2A1yBSHU>S-k%BM*(hQ-ZpYO{;QyFcQS zuj)fWNtGYqU-%!E+Or!ap;D>LWO};$be}$xAHTnS2av_4f*yv!l3ms7C2k5wU#`^@ zgc+g-{E+J=w<`K}@j#SZhQ1}kGTcWDp;UU8A-rmrg^CdRHT0s7VJL4{V#})*g|owp zreKKWZOXdK9Yda5#<06@)CnNpiJGH~Rc=@e@zk6ADSE+m46Bk$@Al(7h84s*YAYPo zT~XCAf>El=_NdI!AlR_=R}|?|yx`TGf-#1%vuRg6!z>FYf^mlNbzz!z^1bbt<@ux^ zE6T~@QF2j590}RvBxO%^t4+l;k_u)zYTMZ-Nu}Eo1=gHQ zb49~dTw_ow!rkIkVzJY;#fPjZr6G-38Vs-1gjHsk>sDMFOc2{@n$Y6NXqb~|5!Vhb zRp_{-;3mVcPgW<58g5Gxl$vDLv=rQ7m}r}$>$hAFm=}(UyST65UI#4!j)n(Vq)dn0 z^u+dCN$f^DBmdi6Ktj^;Q1VaO8*6XzwP#sUS)>l>^F+h46k>1PToSUe&w| zA}x?i>FEJI^oyPitqPrV+8OP=vrR<4_}40}@*3#JIa;;Af%XC4Hi#jz$l%Wi(+61n zis%XAd$9{mOdMmXfy)hCZ{S7)^P#0rm^s11Ug8+pCUTo6nBL1Yv9vYUz~c{$C8Fxb zKR+dO2oieQPpu(Aa7hdzLvUF{X>0>nLCh~{Hh`t`Dn(3@aG&BC6_p{MH9V&tv*fXk W4a)g~Jm}x%7m_SNE-&fWgZy7Q^$xTE diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class b/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class index 7ef319d51ff7ba79befdb8e8181851e2a1b4c8ab..19796ba356acf6dc362d2b9cbb96d6a373f895bc 100644 GIT binary patch delta 89 zcmdnaw4F)()W2Q(7#J8#83ec(m>8JZ8CZB2SQ*$RS}FnA920pp*%=vFobyvsC+1Wu gvjdfY03#3r6#+?3AWt96XJBB}+Rnf@nTt^u0JAO(DgXcg delta 89 zcmdnaw4I6f)W2Q(7#J8#83foFm?qk2GP5(VOcYlVWMp7*&QD3@Vqj+ADiJCLUj<})y`YHerWn9Rkf3josw3^)J) From 80b203dbce6d94ea06d3a6dd656ad3f3c2b5c3e6 Mon Sep 17 00:00:00 2001 From: Makeshkumar B Date: Sat, 12 Aug 2023 11:06:23 +0530 Subject: [PATCH 2/4] Implemented Callable for returning value --- .../com/scaler/quicksort/QuickRunner.java | 18 +++++-------- .../com/scaler/quicksort/QuickSorter.java | 26 +++++++++---------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java b/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java index 100e998..1824116 100644 --- a/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java +++ b/os/code/os/src/main/java/com/scaler/quicksort/QuickRunner.java @@ -1,26 +1,20 @@ package com.scaler.quicksort; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; public class QuickRunner { - public static void main(String[] args) { - int[] arr = {10, 9, 8, 7, 1, 2, 3, 4}; + public static void main(String[] args) throws ExecutionException, InterruptedException { + Integer[] arr = {10, 9, 8, 7, 1, 2, 3, 4}; ExecutorService executor = Executors.newCachedThreadPool(); QuickSorter sorter = new QuickSorter(arr, executor,0,arr.length-1); - executor.execute(sorter); - try { - executor.awaitTermination(3, TimeUnit.SECONDS); - } catch (Exception e) { - System.out.println("Something wrong happened"); - } + Future future = executor.submit(sorter); + arr = future.get(); executor.shutdown(); for(int i=0; i { - private int[] values; + private Integer[] values; private ExecutorService es; private int start; private int end; - @Override - public void run() { - if(start < end) { - int p = partition(values, start, end); - es.execute(new QuickSorter(values, es, start, p - 1)); - es.execute(new QuickSorter(values, es, p + 1, end)); - } - } - - private int partition (int a[], int start, int end) + private int partition (Integer[] a, int start, int end) { int pivot = a[end]; // pivot element int i = (start - 1); @@ -44,5 +36,13 @@ private int partition (int a[], int start, int end) } - + @Override + public Integer[] call() throws Exception { + if(start < end) { + int p = partition(values, start, end); + es.submit(new QuickSorter(values, es, start, p - 1)); + es.submit(new QuickSorter(values, es, p + 1, end)); + } + return values; + } } From 1f3db09c9f58a2f015b417224967e0f48a812cf2 Mon Sep 17 00:00:00 2001 From: Makeshkumar B Date: Sat, 12 Aug 2023 11:08:39 +0530 Subject: [PATCH 3/4] removed App.class --- os/code/os/target/classes/com/scaler/App.class | Bin 1473 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 os/code/os/target/classes/com/scaler/App.class diff --git a/os/code/os/target/classes/com/scaler/App.class b/os/code/os/target/classes/com/scaler/App.class deleted file mode 100644 index 73bcadb60fc78ea49d892f33a45da1d29f3b9241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1473 zcmaJ>+foxj5IvJXmaGdzA}XL56fi+ZybA`eQ3MSa4Hb*>X-Gy`v)N7UPOy0QBYgHn zU-bbjt?~o>2tUNK)Slf?ZZzdq&82(0PxtBRnXf-TeF1O<>pCKcYUnc1jTl4X1>fO0 zi`!ed)y)^8A{k=yrftfb4AFF^97hl08gv7PV6>T+c0DQTWaTu;X|U)6nNDuaHEmgv zuHf~&jz08jNEkSbfi~~;Z8E4b^j4a#D{OfnA4z8dBtNA<>%$x|Fo>fJ+Ln+jye=5p zO(~*jZ{-Jw<#7W;7-l$D=QUAq>57Bn)OZLt}6tFfuci1%G@=T+){SQZIcR{D7M4o38&6YD$ddLvko;c zAJk8{3@5_Qe^rTqVu4B}@TX~89m2p&8cP(8yIYh_ni z--Bi9%SB;XPU@xOTGedIzq+ED+T2ZDXAH)YZ40+xanBQ;hBbzXe>iudqTva{=>JXW zI0N1o!v%Vh)E5DDBw{pQA}L2JqqTc#AMCyV`!dbyHxQ?%3@`!%T*WnCH;XyaDCc*G zqKnqK570iMcMr)=I0o!tBsxEm(BI(nXN+x(e8ic3WR^dpZ)18N=T>I+kbTA2+h5;Q zz$jF}QD`))7p#{Kz7G@VM-~ZOBzYDCej-y8Y=Y$L$Pr!r*>}47Q4~lK!9CokwTDa>XcVzRl1{r-JVpsazX1bdbxi;O From 0ed2df4d81b247404811f877055b52ea6eab2221 Mon Sep 17 00:00:00 2001 From: Makeshkumar B Date: Sat, 12 Aug 2023 11:15:56 +0530 Subject: [PATCH 4/4] deleted UnitOfWork.class --- .../com/scaler/producerconsumer/UnitOfWork.class | Bin 311 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class diff --git a/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class b/os/code/os/target/classes/com/scaler/producerconsumer/UnitOfWork.class deleted file mode 100644 index 19796ba356acf6dc362d2b9cbb96d6a373f895bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcma)1yH3ME5S;ZRCMMvBKS+a2id;nnqCujvNC71E`FtT4Y#%z?{1+7xMLvL!LhMCI zwCqWo31W;0)17>iqL%HmSe84jdcx@1w5Goyg!#oP!4ctH z*+z6q*4l|zXRASJr)=8|4GT})yxgp#owOdL26&p$x#ECfgyeHjRG R%s4sxW6mec2&aqzvLB`ZNFM+I