P40Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
// P40Trhread.java package p40thread; public class P40Thread extends Thread { private int liczbaMax = 5; private static int ileWatkow = 0; private int nrWatku = ++ileWatkow; public P40Thread () { System.out.println("Tworzenie " + nrWatku); } public void run() { while(true) { System.out.println("Watek " + nrWatku + "("+ liczbaMax + ")"); for(int k=0;k < 6;k++) { try { Thread.sleep(10*nrWatku); } catch(InterruptedException e) { System.err.println("przerwany"); } System.out.println("nrWatku = " + nrWatku + " k= " + k); } if(--liczbaMax == 0) { System.out.println("Koniec wątku " + nrWatku); return; } } } public static void main(String[] args) { for(int i = 0; i < 4; i++) { new P40Thread().start(); } System.out.println("Wątki zostały uruchomione"); // Oczekiwanie na zakończenie wszystkich wątków // Przerwanie powinno być zrobione za pomocą join!!!!! try { Thread.sleep(10000); } catch(InterruptedException e) { System.out.println("Przerwany wątek główny"); } System.out.println("Koniec wątku głównego"); } } |
---|
P41Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
// P41Thread.java package p41thread; import java.util.*; public class P41Thread { private int s = 0; private static int ileWatkow = 0; class WatekA extends Thread { private int liczbaMax = 5; private int nrWatku = ++ileWatkow; public void run() { while(true) { System.out.println("A " + nrWatku + " pozostalo " + liczbaMax + " s = " + s++); for(int k=0;k<2;k++) { try { Thread.sleep(6000*nrWatku); } catch(InterruptedException e) { System.err.println("przerwany"); } System.out.println("A " + nrWatku + " k = " + k); } if(--liczbaMax == 0) { System.out.println("Koniec A " + nrWatku); return; } } } } class WatekB extends Thread { private int liczbaMax = 3; private int nrWatku = ++ileWatkow; public void run() { while(true) { System.out.println("B " + nrWatku + " pozostalo " + liczbaMax + " s = " + s++); for(int k=0;k<3;k++) { try { Thread.sleep(5000 * nrWatku); } catch(InterruptedException e) { System.err.println("przerwany"); } System.out.println("B " + nrWatku + " k = " + k + " " + new Date()); } if(--liczbaMax == 0) { System.out.println("Koniec B " + nrWatku); return; } } } } public WatekA zrobWatekA() { return new WatekA(); } public WatekB zrobWatekB() { return new WatekB(); } public static void main(String[] args) { P41Thread a = new P41Thread(); a.zrobWatekA().start(); a.zrobWatekB().start(); a.zrobWatekB().start(); System.out.println("Wątki zostaly uruchomione"); // Oczekiwanie na zakończenie wszystkich wątków // Tu powinno być join!!!! try { Thread.sleep(150000); } catch(InterruptedException e) { System.out.println("Przerwany wątek główny"); } System.out.println("Koniec wątku głównego"); } } |
---|
P42Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
// P42Thread.java package p42thread; public class P42Thread implements Runnable { private int liczbaMax = 5; private static int ileWatkow = 0; private int nrWatku = ++ileWatkow; private Thread t; public P42Thread () { System.out.println("Tworzenie " + nrWatku); t = new Thread(this); t.start(); } public void run() { while(true) { System.out.println("Watek " + nrWatku + "("+ liczbaMax + ")"); for(int k=0;k < 6;k++) { try { Thread.sleep(10*nrWatku); } catch(InterruptedException e) { System.err.println("przerwany"); } System.out.println("nrWatku = " + nrWatku + " k= " + k); } if(--liczbaMax == 0) return; } } public static void main(String[] args) { for(int i = 0; i < 4; i++) { new P42Thread(); } System.out.println("Wątki zostały uruchomione"); // Oczekiwanie na zakończenie wszystkich wątków // Tu powinno być join!!!!! try { Thread.sleep(3000); } catch(InterruptedException e) { System.out.println("Przerwany wątek główny"); } System.out.println("Koniec wątku głównego"); } } |
---|
P43Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
// P43Thread.java package p43thread; public class P43Thread implements Runnable { Thread t; String nazwaWatku; public P43Thread (String nw) { nazwaWatku = nw; System.out.println("Tworzenie " + nazwaWatku); t = new Thread(this,nazwaWatku); t.start(); } public void run() { for(int k=0;k < 3;k++) { System.out.println("Watek " + nazwaWatku + " " + k); try { Thread.sleep(100); } catch(InterruptedException e) { System.err.println("przerwany"); } } } public static void main(String[] args) { P43Thread w1 = new P43Thread("Jeden"); P43Thread w2 = new P43Thread("Dwa"); P43Thread w3 = new P43Thread("Trzy"); System.out.println("Watek " + w1.t.getName() + " " + w1.t.isAlive()); try { w1.t.join(); w2.t.join(); w3.t.join(); } catch(InterruptedException e) { System.out.println("Przerwany wątek główny"); } System.out.println("Koniec wątku głównego"); System.out.println("Watek " + w1.t.getName() + " " + w1.t.isAlive()); } } |
---|
P44Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// P44Thread.java package p44thread; class Watek implements Runnable { Thread t; int i = 0; String nazwaWatku; private volatile boolean petla = true; Watek(String nw, int k) { nazwaWatku = nw; t = new Thread(this,nazwaWatku); t.setPriority(k); } public void run() { while(petla) { i++; } } public void start() { t.start(); } public void stop() { petla = false; } } public class P44Thread { public static void main(String[] args) { Thread b = Thread.currentThread(); //b.setPriority(Thread.MAX_PRIORITY); b.setPriority(Thread.NORM_PRIORITY); //Watek t1 = new Watek("niski",Thread.NORM_PRIORITY - 2); //Watek t2 = new Watek("wysoki",Thread.NORM_PRIORITY + 2); Watek t1 = new Watek("niski",Thread.MIN_PRIORITY); Watek t2 = new Watek("wysoki",Thread.MAX_PRIORITY); t1.start(); t2.start(); //System.out.println(Thread.MAX_PRIORITY + " " // + Thread.MIN_PRIORITY); //System.out.println("t1 " + t1.t.isAlive()); //System.out.println("t2 " + t2.t.isAlive()); try { Thread.sleep(1); } catch(InterruptedException e) { System.out.println("Przerwanie"); } t1.stop(); t2.stop(); try { t1.t.join(); t2.t.join(); } catch(InterruptedException e) { System.out.println("Przerwanie"); } //System.out.println("t1 " + t1.t.isAlive()); //System.out.println("t2 " + t2.t.isAlive()); System.out.println("niski " + t1.i); System.out.println("wysoki " + t2.i); } } |
---|
P45Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
// P45Thread.java package p45thread; class Druk { void drukuj(int k) { System.out.print(k + " "); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.print(k + " "); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.println(k + " "); } } class WatekDruk implements Runnable { int i; Druk d; Thread t; public WatekDruk(Druk x, int y) { d = x; i = y; t = new Thread(this,"Druczek"); t.start(); } public void run() { d.drukuj(i); } } public class P45Thread { public static void main(String[] args) { Druk druk = new Druk(); WatekDruk wD1 = new WatekDruk(druk,1); WatekDruk wD2 = new WatekDruk(druk,10); WatekDruk wD3 = new WatekDruk(druk,100); try { wD1.t.join(); wD2.t.join(); wD3.t.join(); } catch (InterruptedException e) { } } } |
---|
P46Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
// P46Thread.java package p46thread; class DrukA { synchronized void drukuj(int k) { System.out.print(k + " " ); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.print(k + " "); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.println(k + " "); } } class WatekDrukA implements Runnable { int i; DrukA d; Thread t; public WatekDrukA(DrukA x, int y) { d = x; i = y; t = new Thread(this,"Druczek"); t.start(); } public void run() { d.drukuj(i); } } public class P46Thread { public static void main(String[] args) { DrukA druk = new DrukA(); WatekDrukA wD1 = new WatekDrukA(druk,1); WatekDrukA wD2 = new WatekDrukA(druk,10); WatekDrukA wD3 = new WatekDrukA(druk,100); try { wD1.t.join(); wD2.t.join(); wD3.t.join(); } catch (InterruptedException e) { } } } |
---|
P47Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
// P47Thread.java package p47thread; class DrukB { void drukuj(int k) { System.out.print(k + " "); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.print(k + " "); k++; try { Thread.sleep(10); } catch(InterruptedException e) { } System.out.println(k + " "); } } class WatekDrukB implements Runnable { int i; DrukB d; Thread t; public WatekDrukB(DrukB x, int y) { d = x; i = y; t = new Thread(this,"Druczek"); t.start(); } public void run() { synchronized(d) { d.drukuj(i); } } } public class P47Thread { public static void main(String[] args) { DrukB druk = new DrukB(); WatekDrukB wD1 = new WatekDrukB(druk,1); WatekDrukB wD2 = new WatekDrukB(druk,10); WatekDrukB wD3 = new WatekDrukB(druk,100); try { wD1.t.join(); wD2.t.join(); wD3.t.join(); } catch (InterruptedException e) { } } } |
---|
P48Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
// P48Thread.java package p48thread; class Kolejka { int produkt; boolean steruj = false; synchronized int getP() { if(!steruj) { // wyrzucone try { // wyrzucone wait(); // wyrzucone } catch(InterruptedException e) { // wyrzucone System.out.println("Przerwano"); // wyrzucone } // wyrzucone } // wyrzucone System.out.println("Pobrano " + produkt); steruj = false; // wyrzucone notify(); // wyrzucone return produkt; } synchronized void setP(int p) { if(steruj) { // wyrzucone try { // wyrzucone wait(); // wyrzucone } catch(InterruptedException e) { // wyrzucone System.out.println("Przerwano"); // wyrzucone } // wyrzucone } // wyrzucone produkt = p; steruj = true; // wyrzucone System.out.println("Wstawiono " + produkt); notify(); // wyrzucone } } class Konsument implements Runnable { Kolejka q; Thread t; boolean stop = true; int ile; Konsument(Kolejka qq, int k) { ile = k; q = qq; t = new Thread(this, "Konument"); t.start(); } public void run() { while(ile-- > 0) { q.getP(); } } } class Producent implements Runnable { Kolejka q; Thread t; int ile; boolean stop=true; Producent(Kolejka qq, int k) { ile = k; q = qq; t = new Thread(this, "Producent"); t.start(); } public void run() { int produkt = 0; while(ile-- > 0) { q.setP(produkt++); } } } public class P48Thread { public static void main(String[] args) { Kolejka q = new Kolejka(); Producent p = new Producent(q,10); Konsument k = new Konsument(q,10); try { p.t.join(); k.t.join(); } catch(InterruptedException e) { System.out.println("Przerwano"); } } } |
---|
P49Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
// P49Thread.java package p49thread; class KlasaRaz { synchronized void metodaRazA(KlasaDwa dwa) { String watekA = Thread.currentThread().getName(); System.out.println("Wątek " + watekA + " w metodaRazA()"); //2 try { Thread.sleep(1000); } catch(InterruptedException e) { System.out.println("Przewany w KlasaRaz"); } System.out.println("Wątek " + watekA + " próba wołania KlasaDwa.metodaDwaB()"); //4 dwa.metodaDwaB(); } synchronized void metodaRazB() { System.out.println("Nigdy"); } } class KlasaDwa { synchronized void metodaDwaA(KlasaRaz raz) { String watekB = Thread.currentThread().getName(); System.out.println(watekB + " metodaDwaA"); //1 try { Thread.sleep(1000); } catch(InterruptedException e) { System.out.println("Przewany w KlasaDwa"); } System.out.println(watekB + " próba wołania KlasaRaz.metodaRazB()"); //3 raz.metodaRazB(); } synchronized void metodaDwaB() { System.out.println("Nigdy"); } } public class P49Thread implements Runnable { KlasaRaz raz = new KlasaRaz(); KlasaDwa dwa = new KlasaDwa(); P49Thread () { Thread.currentThread().setName("P49Thread"); Thread t = new Thread(this,"Watek blokujący"); t.start(); raz.metodaRazA(dwa); //blokada na raz System.out.println("Wątek P49Thread"); } public void run() { dwa.metodaDwaA(raz); System.out.println("Wątek P49Thread"); } public static void main(String[] args) { new P49Thread(); } } |
---|
P50Thread.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
// P50Thread.java package p50thread; class WatekZawies implements Runnable { boolean flagaW; String nazwaWatek; Thread t; WatekZawies(String nw) { nazwaWatek = nw; t = new Thread(this, nazwaWatek); System.out.println("Wątek " + nazwaWatek); flagaW = false; t.start(); } public void run() { try { for(int k = 0; k < 10; k++) { System.out.println(nazwaWatek + " " + k); Thread.sleep(200); synchronized(this) { while(flagaW) { wait(); } } } } catch(InterruptedException e) { System.out.println(nazwaWatek + " przerwa"); } } void wstrzymaj() { flagaW = true; } synchronized void wznow() { flagaW = false; notify(); } } public class P50Thread { public static void main(String[] args) { WatekZawies wz1 = new WatekZawies("Raz"); WatekZawies wz2 = new WatekZawies("Dwa"); try { Thread.sleep(500); wz1.wstrzymaj(); System.out.println("Wstrzymany Raz " + wz1.t.isAlive()); Thread.sleep(500); wz1.wznow(); System.out.println("Wznowiony Raz " + wz1.t.isAlive()); Thread.sleep(500); wz2.wstrzymaj(); System.out.println("Wstrzymany Dwa " + wz2.t.isAlive()); Thread.sleep(500); wz2.wznow(); System.out.println("Wznowiony Dwa " + wz2.t.isAlive()); } catch (InterruptedException e) { System.out.println("Przerwany wątek"); } try { System.out.println("Oczekiwanie na zakończenie"); wz1.t.join(); wz2.t.join(); } catch(InterruptedException e) { System.out.println("Przerwane"); } System.out.println("Koniec wątku głównego"); } } |
---|