dr Krzysztof Podlaski

Podobne dokumenty
Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O)

Wykład 4: Wejście/wyjście: strumienie Java

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Strumienie i serializacja

Strumienie, pliki. Sortowanie. Wyjątki.

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Programowanie w języku Java WYKŁAD

Programowanie Obiektowe (Java)

Rozdział 7 Strumienie, operacje wejścia-wyjścia

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

Programowanie wielowątkowe. Tomasz Borzyszkowski

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Kurs programowania. Wykład 8. Wojciech Macyna

Programowanie komputerów

Przygotował: Jacek Sroka 1. Java SE. Strumienie

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Strumienie, pliki. Sortowanie. Wyjątki.

Podstawy i języki programowania

Programowanie współbieżne i rozproszone

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Platformy Programistyczne Zagadnienia sieciowe i wątki

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Inynieria oprogramowania Lecture XXX. Java TM cz IV: IO. Bartosz Walter

Współbieżność w środowisku Java

Wykład 10: Wejście i Wyjście

Programowanie w języku Java (OCA+OCP)

Język Java wątki (streszczenie)

Rok akademicki: 2012/2013 Kod: JFM s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Wątki w Javie. Piotr Tokarski

Programowanie obiektowe

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Języki i Techniki Programowania II. Wykład 6. Wejście/Wyjście

Sun Certified Java Programmer. Harmonogram szkolenia

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Programowanie obiektowe

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Język Java wątki (streszczenie)

Działanie systemu operacyjnego

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Gniazda komunikacji sieciowej w środowisku Java

Wykład 2 Składnia języka C# (cz. 1)

Programowanie współbieżne i rozproszone

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

Urządzenia wejścia-wyjścia

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Aplikacje w Javie- wykład 11 Wątki-podstawy

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Zaliczenie przedmiotu:

Programowanie w języku Java dla programistów. Szkolenie adresowane jest do programistów, pragnących poznać język Java.

Wykład 2. Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL

Systemy operacyjne. Paweł Pełczyński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Programowanie współbieżne Laboratorium nr 11

Język JAVA podstawy. Wykład 6, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Korzystanie z bibliotek standardowych

JAVA I SIECI. MATERIAŁY:

System obsªugi wej±cia i wyj±cia.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Programowanie w języku Java 7 z biblioteką SWING

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie sieciowe

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Bezpieczne uruchamianie apletów wg

Wybrane działy Informatyki Stosowanej

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Podstawy współbieżności

Współbieżność w Javie

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Biblioteka standardowa - operacje wejścia/wyjścia

Działanie systemu operacyjnego

Programowanie współbieżne Wykład 7. Iwona Kochaoska

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Programowanie w języku Java (przygotowanie do zawodu)

Programowanie obiektowe zastosowanie języka Java SE

Paweł Skrobanek. C-3, pok

Języki i metody programowania Java INF302W Wykład 4

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Transkrypt:

dr Krzysztof Podlaski Wydział Fizyki i Informatyki Stosowanej 19.11.2010 Łódź Wstęp do Java, wykład 3 1

Biblioteki standardowe Obszerny zestaw Klas i Interfejsów Obsługa Strumieni We-Wy Dysków Sieci java.io, java.nio java.net Wstęp do Java, wykład 3 2

Klasa File Obiekty <-> pliki, katalogi wykonywanie operacji.list() - zawartość katalogu.mkdir() tworzenie podkatalogów.delete() kasowanie inne właściwości plików i katalogów Częsty argument wejściowy dla operacji na plikach Wstęp do Java, wykład 3 3

Klasa String Przeładowany operator + Klasy przyspieszające operacje na ciągach znaków StringBuilder (Java SE 5, 6 ) StringBuffer append(string), tostring() (wielowątkowe programowanie, wolniejsza) Wstęp do Java, wykład 3 4

InputStream i OutputStream Java 1.0 Mało intuicyjna Operacje na bitach Reader i Writer Java 1.1 Operacje na znakach (wsparcie Unicode) Szybsze działanie Mieszanie się tych grup Obsługa poprzez klasy pośredniczące Wstęp do Java, wykład 3 5

Strumień abstrakcyjne podejście przepływ informacji źródło -> ujście danych Typy źródeł Pamięć Tablice bajtów Obiekty String Pliki Potoki (pipe) Połączenia sieciowe Interfejsy InputStream, OutputStream. Wstęp do Java, wykład 3 6

ByteArrayInputStream Tablica bufor w pamięci StringBufferInputStream String FileInputStream Plik na dysku PipedInputStream Potok wylot SequenceInputStream Kilka strumieni FilterInputStream Abstrakcyjna klasa Wykorzystanie FilterInputStream adaptacja strumienia dla konkretnych zastosowań Wstęp do Java, wykład 3 7

DataInputStream BufferedInputSream LineNumberInputStream PushBackInputStream Wczytywanie danych typów podstawowych Odczyt z buforem Śledzenie nr. wiersza Jednobajtowy bufor zwrotny Wstęp do Java, wykład 3 8

ByteArrayOutputStream FileOutputStream PipedOutputStream FilterOutputStream Tablica bufor w pamięci Plik na dysku Potok wlot Abstrakcyjna klasa Wykorzystanie FilterOutputStream Wstęp do Java, wykład 3 9

DataOutputStream BufferedOutputSream PrintStream Zapis danych typów podstawowych Zapis z buforem Formatowanie zapisu Wstęp do Java, wykład 3 10

Rozszerzenie operacji na strumieniach Analogiczna hierarchia Klas InputStream => Reader FileInputStream => FileReader... OutputStream => Writer FileOutputStream => FileWriter Wstęp do Java, wykład 3 11

FilterInputStream => FilterReader FilterOutputStream => FilterWritter BufferedInputStream => BufferedReader BufferedOutputStream => BufferedWriter PrinterStream => PrnterWriter I jeszcze inaczej. RandomAccessFile - seek() obsługa plików o rekordach z określonym rozmiarem. Wstęp do Java, wykład 3 12

Buforowany odczyt pliku Przyklad3_1 Odczyt z Pamięci (Stringu) Przyklad3_2 Formatowany odczyt pamięci Przyklad3_3 Wstęp do Java, wykład 3 13

Zapis do pliku Przyklad3_4 Uproszczony zapis do pliku Java 5 Przyklad3_5 Zapis-odczyt danych Przyklad3_6 Wstęp do Java, wykład 3 14

Standardowe Strumienie we-wy. Czytanie z konsoli (System.in) Przyklad3_7 Przekierowanie PrintWriter -> System.out Przyklad3_8 Przekierowania System.in, out i err System.setIn(InputStream) System.setOut(PrintStream) System.setErr(PrintSrream) Wstęp do Java, wykład 3 15

Wstęp do Java, wykład 3 16

Tradycyjnie (jednowątkowo) Cały program jednym wątkiem Wszystko dzieje się liniowo Jawnie określona kolejność czynności Wielowątkowo Program zbiorem wątków Każdy wątek jest liniowy Nie można określić szybkości wykonania wątków Nieokreślona kolejność zdarzeń Wstęp do Java, wykład 3 17

System wieloprocesorowy procesory są niezależne Wiele czynności (wątków) jednocześnie Współdzielona pamięć i urządzenia System jednoprocesorowy Dzielenie czasu procesora JVM robi to za nas Współdzielenie zasobów Wstęp do Java, wykład 3 18

Podstawowe cechy Wykonywanie współbieżne Wspólne korzystanie z zasobów Problem kontaktu pomiędzy wątkami Problemy z testowaniem Trudno wychwycić błędy Zależność od platformy System jednoprocesorowy System wieloprocesorowy Wstęp do Java, wykład 3 19

Prawie wszystko możliwe bez wątków Argumenty za Szybkość Czasami nawet przy jednym procesorze np. niema zbędnych zastojów W pełni wykorzystanie wielu procesorów Podział logiczny kodu Programowanie poprzez działania Wstęp do Java, wykład 3 20

Przydział czasu procesora dla wątków Wielowątkowość kooperacyjna Zadanie dobrowolnie zatrzymuje się Wtedy uruchamia się nowy wątek Wymaga ścisłej kontroli programisty Zalety Niższy koszt obsługi zmiany wątku Nieograniczona ilość wątków Wady Przydział pracy w systemie wieloprocesorowym Wstęp do Java, wykład 3 21

Wielowątkowość z wywłaszczeniem Mechanizm szeregowania zadań Każdy wątek ma wyznaczany czas procesora Zalety Prostota kodu Wykorzystanie w pełni wielu procesorów Dodaj procesor a szybciej zadziała Wady Wyższe koszta obsługi Ograniczenia co do ilości wątków Wstęp do Java, wykład 3 22

Interfejs Użytkownika Natychmiastowa reakcja na zdarzenia przyciśnięcie klawisza nie zmniejsza efektywności programu Wiele niezależnych okienek (działań) Programowanie serwerowe Obsługa wielu użytkowników jednocześnie Wstęp do Java, wykład 3 23

Interfejs Runnable metoda run() Przyklad3_9 Klasa Thread implementuje Runnable konstruktory np. Thread(Runnable) metody start() sleep(int) i wiele innych. Przyklad3_10 Wstęp do Java, wykład 3 24

Nigdy nie wiadomo co i w jakiej kolejności zostanie wykonane!! Ile było wątków w Przykładzie3_10? 4 nie zapominajmy o wątku głównym (metoda main) Wstęp do Java, wykład 3 25

Priorytet wątków pole priority niestety nie ma ujednoliconej numeracji pomiędzy JVM MAX_PRIORITY, NORM_PRIORITY, MIN_PRIORITY Przyklad3_11 Usypianie wątków metoda sleep(int) Java 5SE możliwość ustalenia jednostek czasu Przyklad3_12 Wstęp do Java, wykład 3 26

Koniec programu Jeżeli zakończą się wszystkie wątki Chyba że są to wątki-demony Przyklad3_13 Wstęp do Java, wykład 3 27

Jeżeli chcemy przeczekać metoda yield() wstrzymuje wykonywanie i zwalnia dostęp do procesora Przyklad3_14 Wątek ma ruszyć dopiero po zakończeniu innego metoda join() Wstrzymuje dopóki nie zakończy się inny wątek Przyklad3_15 Wstęp do Java, wykład 3 28

Współdzielenie zasobu Dwa wątki (lub więcej) Jeden dzielony zasób = Wielka szansa na błędy Przyklad3_16 Wyjście Synchronizacja Przyklad3_17 Zsynchronizowane elementy nie mogą czytać obiektów jednocześnie Wstęp do Java, wykład 3 29

Wątki nie zawsze są niezależne Symulacja produkcji samochodu Możliwe wątki tworzenie podwozia tworzenie nadwozia Elementy wyposażenia Spawanie Osobne czynności ale nie zawsze wykonywane całkowicie niezależnie. Wstęp do Java, wykład 3 30

Możliwości współdziałania Określona kolejność Bądź momenty wspólne Przekazywanie informacji Wstęp do Java, wykład 3 31

Synchronizowanie wątków Wątek musi zaczekać wait() - oczekując zwalnia zablokowane zasoby Poinformowanie wątków czekających notify(), notifyall() Przyklad3_18 Wstęp do Java, wykład 3 32

Komunikacja pomiędzy wątkami Wątek nadający Tworzy Potok Wątek odczytujący Pobiera z Potoku Przyklad3_19 Wstęp do Java, wykład 3 33