Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Java весна 2013 лекция 2
1.
2.
3.
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>>
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){…}
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();
}
}
31.
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());
}
}
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.