Wykład 8 programy

  1. 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");

}

}

  1. 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");

}

}

  1. 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");

}

}

  1. 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());

}

}

  1. 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);

}

}

  1. 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)

{

}

}

}

  1. 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)

{

}

}

}

  1. 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)

{

}

}

}

  1. 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");

}

}

}

  1. 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();

}

}

  1. 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");

}

}


Wyszukiwarka

Podobne podstrony:
Wykład 4 programy
Ekonomia wykłady program PS1
Wykład 2 programy
wyklad c++, Programowanie
Wykład 1 + program wykładów RACH KOSZ projekt 2012
Jadczak R - Badania operacyjne Wykład 3, programowanie całkowitoliczbowe
Wykład 1 Program, literatura, warunki zaliczenia, definicje
Zadania dodatkowe, studia wsiz, semestr 1 2, programowanie LAB wyklad, Programowanie, BFryc, 1IID, Z
Laboratorium nr 2 tablice, studia wsiz, semestr 1 2, programowanie LAB wyklad, Programowanie, BFryc,
WYKŁAD 3 program badan prenatalnych
WYKŁAD 1 Program przedmiotu nauki
Wykład 1 + program wykładów PROGRAM WYKŁADÓW 2013
infa wykłady Programowanie w języku C# Informatyka wykład
Wykład 6 programy
wykład programypolitykizdrowotnej
Wykład 3 Programowanie Definicje
wyklad1, Programowanie, C++
Wykład z programowania obiektowego, Informatyka, Semsetr 2, Programowanie obiektowe
Delphi - Wykłady, Programowanie, Delphi

więcej podobnych podstron