142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

Jarosław Kuchta Monitory.
Mgr inż.Marcin Borkowski Podstawy Java Część II
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe
Programowanie obiektowe Andrzej Ziółkowski Wykład 3.
Analiza wywołania i przebiegu przerwań w systemie Linux


Java Server Faces Tomasz Nowak.
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Sposoby implementacji asocjacji
Java applet (c.d.) Nguyen Hung Son Uniwersytet Warszawski.
Nguyen Hung Son Uniwersytet Warszawski
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
Java vs C# Michał Prządka Tomasz Nowak
Plasterkowanie Leszek Mierzejewski.
OOPC++ - operatory1 Operatory class complex { private: double re, im; public: complex (double r, double i = 0) { re = r; im = i; } friend complex operator+
K.Subieta. SSR, Wykład 4, Folia 1 marzec 2009 Standardy w zakresie systemów rozproszonych i baz danych Kazimierz Subieta Polsko-Japońska Wyższa Szkoła.
Programowanie wielowątkowe
Programowanie sieciowe w Javie
Gniazda komunikacji sieciowej w języku Java
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.

Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Język Java Wielowątkowość.
„Tworzenie aplikacji sieciowych w języku Java”
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Networking Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Objects classes,
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Exceptions Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Threads Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Java – overview.
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
przygotował Michał Wdaniec
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
REKURENCJA.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Pierwsze programy.
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
PRZELICZNIK DŁUGOŚCI w programie NetBeans IDE autorzy: Michał Mrozek i Marcin Mrugała 2012.
Programowanie obiektowe
Tworzenie aplikacji mobilnych
Programowanie obiektowe
db4o Kacper Skory Marcin Talarek
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Adam Suwała DIY - DI.
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Algorytm testujący czy liczba jest liczbą pierwszą czy złożoną
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
OCPJP Inner classes.
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
Wprowadzenie Przygotował Adam Zawadzki
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
do programowania obiektowego w języku Groovy
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Wątki, programowanie współbieżne
Programowanie obiektowe – zastosowanie języka Java SE
Previously discusses: different kinds of variables
Tworzenie wątków w Javie
Zapis prezentacji:

142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t = new JTextField(10); private boolean runFlag = true; private JButton start = new JButton("Start"), onOff = new JButton("Przelacz"); public void init () { Container p = getContentPane(); p.setLayout(new FlowLayout()); p.add(t); p.add(start); p.add(onOff); start.addActionListener(this); onOff.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JButton) { if ( ((JButton)e.getSource()).getText() =="Start" ) go(); else runFlag = !runFlag; } public void go() { ta funkcja nie odda sterowania !!!!! while(true) { try{ Thread.sleep(100);//każda aplikacja ma swój wątek } catch(InterruptedException e){ System.err.println("Przerwany");} if (runFlag) t.setText(Integer.toString(licznik++)); } }}

143 JAVA – wątki public class MThread extends Thread { private int pozostalo = 5; private static int licznikThread = 0; private int identifyThreadNo = ++licznikThread; public MThread() { System.out.println("Utworzono watek nr " + identifyThreadNo); } public void run() { //run jest automatycznie wywoływana przez metodę start while(true) { System.out.println(" Jestem w wątku (" + identifyThreadNo + ") pozostało wejść = " + pozostalo); if (--pozostalo==0) return; //wyjście } public static void main(String [] arg){ for(int i = 0; i <= 10; i++) new MThread().start(); // uruchamiamy wątki, nie wszystkie wystartują od razu } // można zauważyć że nie działają w kolejności powołania }

144 JAVA – sterowanie i wątki public class A21 extends javax.swing.JApplet implements ActionListener { class Zadanie extends Thread { // wątek jest klasą wewnętrzną private int licznik = 0; private boolean runFlag = true; public Zadanie() { start(); } public void zmianaStanu() { runFlag = !runFlag; } public void run() { while(true) { try{ Thread.sleep(100); } catch(InterruptedException e){ System.err.println("Przerwany");} if (runFlag) t.setText(Integer.toString(licznik++)); } }//Zadanie private Zadanie wz = null; private JTextField t = new JTextField(10); private JButton start = new JButton("Start"), onOff = new JButton("Przelacz"); public void init () { Container p = getContentPane(); p.setLayout(new FlowLayout()); p.add(t); p.add(start); p.add(onOff); start.addActionListener(this); onOff.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JButton) { if ( ((JButton)e.getSource()).getText() =="Start" ) {if (wz == null); wz = new Zadanie();} else if(wz != null) wz.zmianaStanu(); }

145 JAVA – sterowanie i wątki public class A22 extends javax.swing.JApplet implements Runnable, ActionListener { private Thread wz = null; private int licznik = 0; private boolean runFlag = true; public void run() { // z interfejsu Runnable while(true) { try{ Thread.sleep(100); } catch(InterruptedException e){ System.err.println("Przerwany");} if (runFlag) t.setText(Integer.toString(licznik++)); } private JTextField t = new JTextField(10); private JButton start = new JButton("Start"), onOff = new JButton("Przelacz"); public void init () { Container p = getContentPane(); p.setLayout(new FlowLayout()); p.add(t); p.add(start); p.add(onOff); start.addActionListener(this); onOff.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JButton) { if ( ((JButton)e.getSource()).getText() =="Start" ) { if (wz == null){ wz = new Thread(A22.this); wz.start(); } else if(wz != null) runFlag =! runFlag ; }

146 JAVA – sterowanie i wątki public class A23 extends javax.swing.JApplet { class Zadanie extends Thread { private int licznik = 0; private boolean runFlag = true; private JTextField t = new JTextField(10); private JButton b = new JButton("ON/OFF"); public Zadanie() { b.addActionListener(new Akcja()); JPanel p = new JPanel(); p.add(b); p.add(t); getContentPane().add(p); } class Akcja implements ActionListener { public void actionPerformed(ActionEvent e) { if((e.getSource() instanceof JButton) && ( ((JButton)e.getSource()).getText() =="ON/OFF" )) zmianaStanu(); } public void zmianaStanu() { runFlag = !runFlag; } public void run() { while(true) { try{ Thread.sleep(100); } catch(InterruptedException e){ System.err.println("Przerwany");} if (runFlag) t.setText(Integer.toString(licznik++)); } }//Zadanie

147 JAVA – sterowanie i wątki private Zadanie [] tz = new Zadanie[10]; private static boolean running = false; private JLabel et = new JLabel(); private JButton start = new JButton("Start"); public void init () { Container p = getContentPane(); p.setLayout(new FlowLayout()); p.add(start); p.add(et); start.addActionListener(new Zdarzenie()); for(int i = 0; i <= 5; i++) tz[i] = new Zadanie(); } class Zdarzenie implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JButton) { if ( ( ((JButton)e.getSource()).getText() =="Start" ) && (running == false) ) { running = true; et.setText("Ruszyły"); for(int i = 0; i <=5; i++) tz[i].start();} } }//zd. }

148 JAVA – sterowanie i wątki class TDemon extends Thread { public TDemon() { setDaemon(true);// ustawienie System.out.println(" uruchomiono"); } public void run() { while(true) { yield(); } public class TDemonTest { public static void main(String [] arg) { TDemon watek = new TDemon(); if (watek.isDaemon()) System.out.println("Jest demonem"); //sprawdzenie try { System.in.read(); } catch (IOException e ) {System.err.println("blad operacji IO");} } Wątek będący demonem zajmuje się obsługiwaniem innych wątków uruchomionych w tym samym procesie, co wątek demona. Np. HotJava używa do czterech demonów nazwanych "Image Fetcher", które dostarczają obrazków z dysku lub sieci dla wątków, które tego potrzebują. Jeżeli wszystkie wątki nie będące demonami kończą pracę wątki demony również.

149 JAVA – synchronizacja wątków public class TBox{ int value; synchronized int changeValueIn(int stan) { while (value != 0) { try { wait(); } catch (InterruptedException e) { } } value = stan; notifyAll(); return stan; } synchronized int changeValueOut(int stan) { while (value == 0) { try { wait(); } catch (InterruptedException e) { } } value = 0; notifyAll(); return stan; } public static void main(String [] arg) { TBox box = new TBox(); Tin podaj = new Tin(box); Tou pobierz = new Tou(box); podaj.start(); pobierz.start(); } Wersja bez synchronizacji nie ma elementów pogrubionych

150 JAVA – synchronizacja wątków class Tou extends Thread { public TBox b; public int time = 5; public Tou( TBox c) {super(); b =c;} public void run() { while(true){ for(int i = 1; i <=3; i++) { b.changeValueOut(i); System.out.println("pobrano = " + i); } if (--time==0) return; } }//Tou class Tin extends Thread { public TBox b; public int time =5; public Tin( TBox c) {super(); b=c;} public void run() { while(true){ for(int i = 1; i <=3; i++) { try { sleep((int)(Math.random() * 100)); } catch(InterruptedException e){ System.err.println("Przerwany");} b.changeValueIn(i); System.out.println(" wstawiono "+i ); } if (--time==0) return; } }} //Tin

151 JAVA – sterowanie i wątki