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

Podobne dokumenty
dr Krzysztof Podlaski

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)

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

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

Kurs programowania. Wykład 8. Wojciech Macyna

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

Programowanie komputerów

Przygotował: Jacek Sroka 1. Java SE. Strumienie

Strumienie, pliki. Sortowanie. Wyjątki.

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 TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Podstawy i języki programowania

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

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

Programowanie współbieżne i rozproszone

Platformy Programistyczne Zagadnienia sieciowe i wątki

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

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

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

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

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

Język Java wątki (streszczenie)

Programowanie w języku Java (OCA+OCP)

Działanie systemu operacyjnego

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

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

Programowanie obiektowe

Wątki w Javie. Piotr Tokarski

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

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

Sun Certified Java Programmer. Harmonogram szkolenia

Język Java wątki (streszczenie)

Programowanie obiektowe

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

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

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

Programowanie współbieżne i rozproszone

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

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

Działanie systemu operacyjnego

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

Działanie systemu operacyjnego

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

Gniazda komunikacji sieciowej w środowisku Java

Urządzenia wejścia-wyjścia

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

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

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

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

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

Wybrane działy Informatyki Stosowanej

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

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

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

Zaliczenie przedmiotu:

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

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

Programowanie współbieżne Laboratorium nr 11

Systemy operacyjne. Paweł Pełczyński

Działanie systemu operacyjnego

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

Informatyka. informatyka i nauki komputerowe (computer science)

Korzystanie z bibliotek standardowych

Bezpieczne uruchamianie apletów wg

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

JAVA I SIECI. MATERIAŁY:

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

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

Paweł Skrobanek. C-3, pok

Programowanie w języku Java 7 z biblioteką SWING

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

Współbieżność w Javie

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

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

Architektura komputerów

Programowanie sieciowe

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

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

4. Procesy pojęcia podstawowe

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

Podstawy współbieżności

Biblioteka standardowa - operacje wejścia/wyjścia

Współbieżność w Javie

Programowanie w języku Java (przygotowanie do zawodu)

Podstawy Programowania

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

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

Transkrypt:

Wstęp do Java Operacje Wejścia-Wyjścia Programowanie Wielowątkowe dr Krzysztof Podlaski Wydział Fizyki i Informatyki Stosowanej 19.03.2015 Łódź 1

Obsługa procesów We-Wy Biblioteki standardowe Obszerny zestaw Klas i Interfejsów Obsługa Strumieni We-Wy Dysków Sieci» java.io, java.nio» java.net 2

Klasa File 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 3

Ciągi znaków Klasa String Przeładowany operator + Klasy przyspieszające operacje na ciągach znaków StringBuilder (Java SE 5, 6 ) StringBuffer (wielowątkowe programowanie, wolniejsza) append(string), tostring() 4

Operacje Wejścia i Wyjścia 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 5

Obsługa Strumieni 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. 6

Strumienie Wejścia InputStream 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ń 7

Pochodne FilterInputStream DataInputStream BufferedInputSream LineNumberInputStream PushBackInputStream Wczytywanie danych typów podstawowych Odczyt z buforem Śledzenie nr. wiersza Jednobajtowy bufor zwrotny 8

Strumienie Wyjścia OutputStream ByteArrayOutputStream FileOutputStream PipedOutputStream FilterOutputStream Tablica bufor w pamięci Plik na dysku Potok wlot Abstrakcyjna klasa Wykorzystanie FilterOutputStream 9

Pochodne FilterOutputStream DataOutputStream Zapis danych typów podstawowych BufferedOutputSream PrintStream Zapis z buforem Formatowanie zapisu 10

Klasy Reader i Writer Rozszerzenie operacji na strumieniach Analogiczna hierarchia Klas InputStream => Reader FileInputStream => FileReader... OutputStream => Writer FileOutputStream => FileWriter 11

Modyfikacja zachowań 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. 12

Przykłady - odczyt Buforowany odczyt pliku Przyklad3_1 Odczyt z Pamięci (Stringu) Przyklad3_2 Formatowany odczyt pamięci Przyklad3_3 13

Przykłady - zapis Zapis do pliku Przyklad3_4 Uproszczony zapis do pliku Java 5 Przyklad3_5 Zapis-odczyt danych Przyklad3_6 14

System.{in, out, err} 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) 15

PROGRAMOWANIE WIELOWĄTKOWE 16

Wątki w programowaniu 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ń 17

Strona techniczna 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 18

Strona techniczna cd 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 19

Po co nam wątki 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 20

Wątki a czas procesora 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 21

Wątki a czas procesora cd 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 22

Do czego to się przyda 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 23

Wątki w języku java Interfejs Runnable metoda run() Przyklad3_9 Klasa Thread implementuje Runnable konstruktory» np. Thread(Runnable) metody» start()» sleep(int)» i wiele innych. Przyklad3_10 24

Pierwsze wniosek 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) 25

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

Wątki-Demony Koniec programu Jeżeli zakończą się wszystkie wątki Chyba że są to wątki-demony Przyklad3_13 27

Wstrzymywanie, łączenie wątków 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 28

Współdzielenie zasobów 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 29

Współdziałanie wątków 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. 30

Współdziałanie cd. Możliwości współdziałania Określona kolejność Bądź momenty wspólne Przekazywanie informacji 31

Określanie następstw Synchronizowanie wątków Wątek musi zaczekać wait() - oczekując zwalnia zablokowane zasoby Poinformowanie wątków czekających notify(), notifyall() Przyklad3_18 32

Przesyłanie informacji Komunikacja pomiędzy wątkami Wątek nadający Tworzy Potok Wątek odczytujący Pobiera z Potoku Przyklad3_19 33