SlideShare a Scribd company logo
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
public abstract class MyAbstractClass {
private int a = 0;
public int getSum(){
return a + getB();
}
protected int getA(){
return a;
}
abstract int getB();
}
public interface MyInterface {
int getDif();
}
MyAbstractClass
<<abstract>>
- int a
+ int getSum()
+ int getA()
int getB()
MyInterface
<<interface>>
int getDif()
public class MyClass extends MyAbstractClass implements MyInterface {
private int b = 1;
public int getB(){
return b;
}
public int getDif(){
return getA() - b;
}
}
MyAbstractClass
<<abstract>>
MyInterface
<<interface>>
MyClass
public static void main(String[] args) {
//MyAbstractClass aObject = new MyAbstractClass(); - ошибка
MyClass object1 = new MyClass();
int result1 = object1.getSum();
int result2 = object1.getDif();
doSomething(object1);
MyInterface object2 = new MyClass();
//int result3 = object2.getSum(); - ошибка
int result4 = object2.getDif();
doSomething(object2);
}
public static void doSomething(MyInterface object){
//MyClass object3 = object; - ошибка
//int result5 = object.getSum(); - ошибка
int result6 = object.getDif();
}
public class MyClassChild extends MyClass implements Interface1, Interface2{
…
}
MyClass
Interface2
<<interface>>
MyClassChild
Interface1
<<interface>>
Java весна 2013 лекция 2
―
static Class<T> forName(String className)
String getCanonicalName()
Fields[] getField(String name)
Class[] getInterfaces()
Method[] getMethods()
Constructor[] getConstructors()
public Class<?> getClass()
―
public String toString()
public boolean equals(Object obj)
public int hashCode()
protected Object clone()
Java весна 2013 лекция 2
bits type type
8 byte boolean
16 short char
32 int float
64 long double
Java весна 2013 лекция 2
―
List students == List<Object> students
public Object getFirstValue(List listOfNumbers){
return listOfNumbers.get(0);
}
public String getFirstStringValue(List<String> listOfNumbers){
return listOfNumbers.get(0);
}
public static void main(String[] args){
List<Integer> listOfNumbers = new ArrayList<Integer>();
listOfNumbers.add(42);
String name1 = (String)getFirstValue(listOfNumbers); //Runtime error!
String name2 = getFirstStringValue(listOfNumbers); //Compile error!
}
public class GenericExample<T> {
private T value;
public GenericExample(T value){
this.value = value;
}
public T getT(){
return value;
}
public static void main(String[] args) {
GenericExample<Integer> intObject = new GenericExample<Integer>(1);
Integer valueInteger = intObject.getT();
GenericExample<String> stringObject = new GenericExample<String>("word");
String valueString = stringObject.getT();
}
}
public class GenericExample {
public static <T> T getTheFirst(List<T> list){
return list.get(0);
}
public static void main(String[] args) {
List<Integer> listOfInts = new ArrayList<Integer>();
listOfInts.add(0);
Integer intValue = getTheFirst(listOfInts);
List<String> listOfStrings = new ArrayList<String>();
listOfInts.add(“Java is the best!”);
String stringValue = getTheFirst(listOfStrings);
}
}
public class LongId<T> {
private long id;
public LongId(long id){
this.id = id;
}
public long getLong(){
return id;
}
}
public void manyIdsInParams(long userId, long serverId, long adress){…}
public void manyIdsInParams(LongId<User> userId,
LongId<Server> serverId,
LongId<Adress> adress){…}
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
Java весна 2013 лекция 2
―
Java весна 2013 лекция 2
Java весна 2013 лекция 2
public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
(new Thread(new HelloRunnable())).start();
}
}
public class HelloThread extends Thread {
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
(new HelloThread()).start();
}
}
Java весна 2013 лекция 2
try {
Thread.sleep(5000);
} catch (InterruptedException e) { // We've been interrupted.
return;
}
for (int i = 0; i < inputs.length; i++) {
heavyTask(inputs[i]);
if (Thread.interrupted()) { // We've been interrupted.
return;
}
}
public class HelloThread extends Thread {
public void run() {
System.out.println(“1. Hello from a thread!");
}
public static void main(String args[]) {
Thread thread = new HelloThread();
thread.start();
thread.join();
System.out.println(“2. Hello from the main!");
}
}
public class HelloThread extends Thread {
private StringBuilder builder;
public HelloThread(StringBuilder builder){
this.builder = builder;
}
public void run() {
builder.append(“?. Hello from a thread!");
}
public static void main(String args[]) {
StringBuilder builder = new StringBuilder();
Thread thread = new HelloThread(builder);
thread.start();
builder.append(“?. Hello from the main!");
thread.join();
Systen.out.printin(builder.toString());
}
}
Java весна 2013 лекция 2
public synchronized void increment() {
j++;
}
public void addName(String name) {
synchronized(lockObject) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
public class TwoMonitors {
private long c1 = 0;
private long c2 = 0;
private Object lock1 = new Object(); //the first monitor
private Object lock2 = new Object(); //the second monitor
public void c1Up() {
synchronized(lock1) {
c1++;
}
}
public void c2Up() {
synchronized(lock2) {
c2++;
}
}
}
public void c1c2Up() {
synchronized(lock1) {
c1++;
synchronized(lock2) {
c2++;
}
}
}
public void c2c1Up() {
synchronized(lock2) {
c2++;
synchronized(lock1) {
c1++;
}
}
}
private boolean needDoSomething;
public void run() {
while(true){
if(needDoSomething){
doSomething();
}
Thread.sleep(1000);
}
}
―
―
―
―
Java весна 2013 лекция 2
4. class Object и class Class<?>. Основные методы этих классов
5. Простые типы в Java. Классы "обертки" простых типов.
6. Generic programming в Java. Создание своих шаблонных классов и методов.
7. Коллекции в Java. Iterator, Iterable.
8. Processes и Threads.
9. Interface Runnable. class Thread. Методы start() и run().
10. Методы класса Thread: sleep(), interrupt(), join().
11. Ключевые слова volatile и synchronized.
12. Проблемы многопоточного доступа к данным. Race condition. Deadlock.
13. Методы класса Object: wait(), notify() и notifyAll().
Шаг 4: Вынести Frontend из класса Main:
class Frontend extends AbstractHandler implements Runnable{…}
Шаг 5: Добавить в класс Frontend переменную handleCount = 0.
Запустить Frontend в отдельном потоке. В методе run() писать
значение handleCount в лог каждые 5 секунд.
В методе handle() кроме формирования страницы, увеличивать
значение handleCount.
Hint: Для handleCount хорошо подходит тип данных AtomicInteger.
Java весна 2013 лекция 2

More Related Content

PPT
Networking Core Concept
DOCX
Java programs
PDF
3. Объекты, классы и пакеты в Java
PDF
Java puzzles
PPTX
Java осень 2012 лекция 2
DOCX
Java practical
PPT
Data structures cs301 power point slides lecture 03
PDF
The Ring programming language version 1.5.2 book - Part 26 of 181
Networking Core Concept
Java programs
3. Объекты, классы и пакеты в Java
Java puzzles
Java осень 2012 лекция 2
Java practical
Data structures cs301 power point slides lecture 03
The Ring programming language version 1.5.2 book - Part 26 of 181

What's hot (20)

PDF
Sam wd programs
PDF
DCN Practical
PDF
Core java pract_sem iii
PDF
The Ring programming language version 1.6 book - Part 40 of 189
PDF
The Ring programming language version 1.6 book - Part 35 of 189
PPTX
Poor Man's Functional Programming
PDF
The Ring programming language version 1.6 book - Part 32 of 189
PDF
Refactoring to Macros with Clojure
PDF
Advanced Java Practical File
PPTX
#5 (Remote Method Invocation)
DOC
Ds 2 cycle
PPT
Socket Programming
PDF
The Ring programming language version 1.4 book - Part 9 of 30
PPTX
Java practice programs for beginners
PPT
JDBC Core Concept
PDF
Works Applications Test - Chinmay Chauhan
PDF
The Ring programming language version 1.5.1 book - Part 31 of 180
PDF
The Ring programming language version 1.5.2 book - Part 37 of 181
PPT
Oop lecture9 13
PDF
C++ practical
Sam wd programs
DCN Practical
Core java pract_sem iii
The Ring programming language version 1.6 book - Part 40 of 189
The Ring programming language version 1.6 book - Part 35 of 189
Poor Man's Functional Programming
The Ring programming language version 1.6 book - Part 32 of 189
Refactoring to Macros with Clojure
Advanced Java Practical File
#5 (Remote Method Invocation)
Ds 2 cycle
Socket Programming
The Ring programming language version 1.4 book - Part 9 of 30
Java practice programs for beginners
JDBC Core Concept
Works Applications Test - Chinmay Chauhan
The Ring programming language version 1.5.1 book - Part 31 of 180
The Ring programming language version 1.5.2 book - Part 37 of 181
Oop lecture9 13
C++ practical
Ad

Viewers also liked (19)

PPTX
АиСД осень 2012 лекция 10
PDF
Бизнес и системный анализ весна 2013 лекция 1
PDF
C++ осень 2012 лекция 8
PPTX
Java осень 2012 лекция 3
PDF
Проектирование графических интерфейсов лекция 2
PPTX
СУБД осень 2012 лекция 8
PPTX
Highload осень 2012 лекция 8
PPT
Web весна 2012 лекция 7
PPTX
СУБД осень 2012 вестник 3
PPTX
Java весна 2013 лекция 8
PDF
Проектирование графических интерфейсов лекция 5
PPTX
Java осень 2012 лекция 4
PPTX
Java весна 2013 лекция 7
PPTX
Java осень 2012 лекция 6
PPTX
Java весна 2013 лекция 6
PPTX
Java весна 2013 лекция 4
PDF
C++ осень 2012 лекция 5
PDF
Тестирование весна 2013 лекция 1
PDF
Бизнес и системный анализ весна 2013 лекция 8
АиСД осень 2012 лекция 10
Бизнес и системный анализ весна 2013 лекция 1
C++ осень 2012 лекция 8
Java осень 2012 лекция 3
Проектирование графических интерфейсов лекция 2
СУБД осень 2012 лекция 8
Highload осень 2012 лекция 8
Web весна 2012 лекция 7
СУБД осень 2012 вестник 3
Java весна 2013 лекция 8
Проектирование графических интерфейсов лекция 5
Java осень 2012 лекция 4
Java весна 2013 лекция 7
Java осень 2012 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 4
C++ осень 2012 лекция 5
Тестирование весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 8
Ad

Similar to Java весна 2013 лекция 2 (20)

PPT
Java Tutorials
PPT
java training faridabad
PDF
Java Runtime: повседневные обязанности JVM
PPTX
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
PDF
Александр Ильин, Oracle
PPT
Core java by a introduction sandesh sharma
PDF
Java 8 - Nuts and Bold - SFEIR Benelux
PPTX
CodeCamp Iasi 10 march 2012 - Practical Groovy
ODP
Synapseindia reviews.odp.
PPT
Java Tutorial
PDF
Android Development Course in HSE lecture #2
PPTX
OBJECT ORIENTED PROGRAMMING STRUCU2.pptx
PDF
20070329 Object Oriented Programing Tips
PDF
Concurrencyproblem
PPSX
Java.lang.object
KEY
Domänenspezifische Sprachen mit Xtext
PDF
Preexisting code, please useMain.javapublic class Main { p.pdf
PPT
JavaTutorials.ppt
PPTX
More topics on Java
Java Tutorials
java training faridabad
Java Runtime: повседневные обязанности JVM
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Александр Ильин, Oracle
Core java by a introduction sandesh sharma
Java 8 - Nuts and Bold - SFEIR Benelux
CodeCamp Iasi 10 march 2012 - Practical Groovy
Synapseindia reviews.odp.
Java Tutorial
Android Development Course in HSE lecture #2
OBJECT ORIENTED PROGRAMMING STRUCU2.pptx
20070329 Object Oriented Programing Tips
Concurrencyproblem
Java.lang.object
Domänenspezifische Sprachen mit Xtext
Preexisting code, please useMain.javapublic class Main { p.pdf
JavaTutorials.ppt
More topics on Java

More from Technopark (20)

PDF
Лекция 11. Вычислительная модель Pregel
PDF
Лекция 14. Hadoop в Поиске Mail.Ru
PDF
Лекция 13. YARN
PDF
Лекция 12. Spark
PDF
Лекция 10. Apache Mahout
PDF
Лекция 9. ZooKeeper
PDF
Лекция 7. Введение в Pig и Hive
PDF
Лекция 6. MapReduce в Hadoop (графы)
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
PDF
Лекция 4. MapReduce в Hadoop (введение)
PDF
Лекция 3. Распределённая файловая система HDFS
PDF
Лекция 2. Основы Hadoop
PDF
Лекция 1. Введение в Big Data и MapReduce
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PPT
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
PPTX
СУБД 2013 Лекция №9 "Безопасность баз данных"
PPTX
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
PPTX
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
PPTX
СУБД 2013 Лекция №5 "Определение узких мест"
PPTX
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Лекция 11. Вычислительная модель Pregel
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 13. YARN
Лекция 12. Spark
Лекция 10. Apache Mahout
Лекция 9. ZooKeeper
Лекция 7. Введение в Pig и Hive
Лекция 6. MapReduce в Hadoop (графы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 4. MapReduce в Hadoop (введение)
Лекция 3. Распределённая файловая система HDFS
Лекция 2. Основы Hadoop
Лекция 1. Введение в Big Data и MapReduce
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
cuic standard and advanced reporting.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Cloud computing and distributed systems.
PDF
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Understanding_Digital_Forensics_Presentation.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation theory and applications.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The AUB Centre for AI in Media Proposal.docx
Advanced methodologies resolving dimensionality complications for autism neur...
cuic standard and advanced reporting.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Weekly Chronicles - August'25 Week I
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Monthly Chronicles - July 2025
Cloud computing and distributed systems.
Spectral efficient network and resource selection model in 5G networks

Java весна 2013 лекция 2

  • 4. public abstract class MyAbstractClass { private int a = 0; public int getSum(){ return a + getB(); } protected int getA(){ return a; } abstract int getB(); } public interface MyInterface { int getDif(); } MyAbstractClass <<abstract>> - int a + int getSum() + int getA() int getB() MyInterface <<interface>> int getDif()
  • 5. public class MyClass extends MyAbstractClass implements MyInterface { private int b = 1; public int getB(){ return b; } public int getDif(){ return getA() - b; } } MyAbstractClass <<abstract>> MyInterface <<interface>> MyClass
  • 6. public static void main(String[] args) { //MyAbstractClass aObject = new MyAbstractClass(); - ошибка MyClass object1 = new MyClass(); int result1 = object1.getSum(); int result2 = object1.getDif(); doSomething(object1); MyInterface object2 = new MyClass(); //int result3 = object2.getSum(); - ошибка int result4 = object2.getDif(); doSomething(object2); } public static void doSomething(MyInterface object){ //MyClass object3 = object; - ошибка //int result5 = object.getSum(); - ошибка int result6 = object.getDif(); }
  • 7. public class MyClassChild extends MyClass implements Interface1, Interface2{ … } MyClass Interface2 <<interface>> MyClassChild Interface1 <<interface>>
  • 9. ― static Class<T> forName(String className) String getCanonicalName() Fields[] getField(String name) Class[] getInterfaces() Method[] getMethods() Constructor[] getConstructors()
  • 10. public Class<?> getClass() ― public String toString() public boolean equals(Object obj) public int hashCode() protected Object clone()
  • 12. bits type type 8 byte boolean 16 short char 32 int float 64 long double
  • 14.
  • 15. List students == List<Object> students public Object getFirstValue(List listOfNumbers){ return listOfNumbers.get(0); } public String getFirstStringValue(List<String> listOfNumbers){ return listOfNumbers.get(0); } public static void main(String[] args){ List<Integer> listOfNumbers = new ArrayList<Integer>(); listOfNumbers.add(42); String name1 = (String)getFirstValue(listOfNumbers); //Runtime error! String name2 = getFirstStringValue(listOfNumbers); //Compile error! }
  • 16. public class GenericExample<T> { private T value; public GenericExample(T value){ this.value = value; } public T getT(){ return value; } public static void main(String[] args) { GenericExample<Integer> intObject = new GenericExample<Integer>(1); Integer valueInteger = intObject.getT(); GenericExample<String> stringObject = new GenericExample<String>("word"); String valueString = stringObject.getT(); } }
  • 17. public class GenericExample { public static <T> T getTheFirst(List<T> list){ return list.get(0); } public static void main(String[] args) { List<Integer> listOfInts = new ArrayList<Integer>(); listOfInts.add(0); Integer intValue = getTheFirst(listOfInts); List<String> listOfStrings = new ArrayList<String>(); listOfInts.add(“Java is the best!”); String stringValue = getTheFirst(listOfStrings); } }
  • 18. public class LongId<T> { private long id; public LongId(long id){ this.id = id; } public long getLong(){ return id; } } public void manyIdsInParams(long userId, long serverId, long adress){…} public void manyIdsInParams(LongId<User> userId, LongId<Server> serverId, LongId<Adress> adress){…}
  • 26.
  • 29. public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new Thread(new HelloRunnable())).start(); } }
  • 30. public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new HelloThread()).start(); } }
  • 32. try { Thread.sleep(5000); } catch (InterruptedException e) { // We've been interrupted. return; } for (int i = 0; i < inputs.length; i++) { heavyTask(inputs[i]); if (Thread.interrupted()) { // We've been interrupted. return; } }
  • 33. public class HelloThread extends Thread { public void run() { System.out.println(“1. Hello from a thread!"); } public static void main(String args[]) { Thread thread = new HelloThread(); thread.start(); thread.join(); System.out.println(“2. Hello from the main!"); } }
  • 34. public class HelloThread extends Thread { private StringBuilder builder; public HelloThread(StringBuilder builder){ this.builder = builder; } public void run() { builder.append(“?. Hello from a thread!"); } public static void main(String args[]) { StringBuilder builder = new StringBuilder(); Thread thread = new HelloThread(builder); thread.start(); builder.append(“?. Hello from the main!"); thread.join(); Systen.out.printin(builder.toString()); } }
  • 36. public synchronized void increment() { j++; } public void addName(String name) { synchronized(lockObject) { lastName = name; nameCount++; } nameList.add(name); }
  • 37. public class TwoMonitors { private long c1 = 0; private long c2 = 0; private Object lock1 = new Object(); //the first monitor private Object lock2 = new Object(); //the second monitor public void c1Up() { synchronized(lock1) { c1++; } } public void c2Up() { synchronized(lock2) { c2++; } } }
  • 38. public void c1c2Up() { synchronized(lock1) { c1++; synchronized(lock2) { c2++; } } } public void c2c1Up() { synchronized(lock2) { c2++; synchronized(lock1) { c1++; } } }
  • 39. private boolean needDoSomething; public void run() { while(true){ if(needDoSomething){ doSomething(); } Thread.sleep(1000); } }
  • 42. 4. class Object и class Class<?>. Основные методы этих классов 5. Простые типы в Java. Классы "обертки" простых типов. 6. Generic programming в Java. Создание своих шаблонных классов и методов. 7. Коллекции в Java. Iterator, Iterable. 8. Processes и Threads. 9. Interface Runnable. class Thread. Методы start() и run(). 10. Методы класса Thread: sleep(), interrupt(), join(). 11. Ключевые слова volatile и synchronized. 12. Проблемы многопоточного доступа к данным. Race condition. Deadlock. 13. Методы класса Object: wait(), notify() и notifyAll().
  • 43. Шаг 4: Вынести Frontend из класса Main: class Frontend extends AbstractHandler implements Runnable{…} Шаг 5: Добавить в класс Frontend переменную handleCount = 0. Запустить Frontend в отдельном потоке. В методе run() писать значение handleCount в лог каждые 5 секунд. В методе handle() кроме формирования страницы, увеличивать значение handleCount. Hint: Для handleCount хорошо подходит тип данных AtomicInteger.