powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы новичка.
25 сообщений из 83, страница 2 из 4
Вопросы новичка.
    #38707322
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

Поменяй e.printStackTrace() на e.printStackTrace(System.out) и тогда будет стабильно одинаково.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707336
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторSystem.out и System.err это два разных потока вывода. В некоторых случаях порядок вывода err и out в реальную консоль может различаться. Если я правильно понял ваш вопрос. А то какие "обработчики" мутные. У вас в коде нет "обработчиков".
Да все правильно, я слышал про потоки, что они могут работать независимо, но пока с ними не разбирался. Вроде понятно стало. Спасибо. А по поводу кода, это просто пример создания своего исключения, сильно не заморачивался(обработчик имелось ввиду блок catch).
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38707343
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenДа все правильно, я слышал про потоки, что они могут работать независимо, но пока с ними не разбирался.

Нет. Это не те потоки. Это потоки ввода\вывода (IO Stream).
System.err это один поток печати.
System.out это второй поток печати.
Они разные.
Ваша IDE или java.exe направляют оба этих потока в свою консоль.


faustgreenВроде понятно стало. Спасибо. А по поводу кода, это просто пример создания своего исключения, сильно не заморачивался(обработчик имелось ввиду блок catch).
ОК. Просто дело не в обработке исключения а в выводе на консоль.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38769352
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №5.
Разбираюсь с методами класса java.util.concurrent.Semaphore(в примере ниже они расмотренны в 1 потоке, просто для ознакомления с методами)

код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
package concurrent;

import java.util.concurrent.Semaphore;
// поток может выполнять код ограниченный semaphore.ecquire и semaphore.release(для одного и того же semaphore)
// захватив этот семафор при наличии свободных разрешений.
public class Semaphore_semaphoreMetods {
	// Создаем объект семафора.
	static Semaphore semaphore = new Semaphore(6); // работают одновременно 6 потока(либо 1 поток которые захвати все 5 разрешений).
	
	public static void main(String[] args) throws InterruptedException {
		Semaphore_semaphoreMetods obj1 = new Semaphore_semaphoreMetods();
		obj1.semaphoreMetods(semaphore);
	}
	
	void semaphoreMetods(Semaphore semaphore) throws InterruptedException{
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество - " + semaphore.availablePermits());
		System.out.println();
		
		semaphore.acquire(); // захват одного разрешения семафора (Метод может порождать исключение)
		System.out.println("Захвачено 1 разрешение семафора с помощью метода semaphore.acquire()");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата одного) - " + semaphore.availablePermits());
		System.out.println();
		
		semaphore.acquire(3); // Захват сразу трех разрешений.
		System.out.println("Захвачено 3 разрешение семафора с помощью метода semaphore.acquire(3)");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата трех) - " + semaphore.availablePermits());
		System.out.println();
		
		int acquireCount = semaphore.drainPermits(); // Захват всех свободных разрешений.
		System.out.println("Захвачены все свободные разрешения семафора в количестве - " + acquireCount + " с помощью метода semaphore.drainPermits()");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата всех осташихся свободных) - " + semaphore.availablePermits());
		System.out.println();
		
		int waitingCount = semaphore.getQueueLength();
		System.out.println("Получение количества запросов ожидающих семафор через команду semaphore.getQueueLength()");
		System.out.println("Число ожидающих запросов на захват семафора - " + waitingCount);
		System.out.println("Пробуем захватить еще 3 разрешение и заново проверяем число ожидающих потоков");
		semaphore.acquire(3); // Тут мы висим, так как все разрешения семафоа заняты.
		System.out.println("Получение количества запросов ожидающих семафор через команду semaphore.getQueueLength()");
	}
}



В предпоследней команде метода semaphoreMetods я попытался захватить 3 разрешения семафора, у которого они все закончились и на этой команде повис.
Вопрос: Правильно ли я понимаю, что если все разрешения семафора заняты, то последующий вызов метода ecquire() приведет к блокеровке выполнения этого потока, и соответственно, здесь же я не смогу получить количество ожидающих потоков. Т.е. я стал в очередь на семафор и хочу посмотреть сколько еще запросов на захват стоит паралельно с ним ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38769408
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде бы разобрался, возвращаеться не количество разрешений, а количество ожидающих потоков. + Из другого потока можно снять блокировку(правда какой поток при этом потеряет семафор - не известно(если их много)):


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
package concurrent;

import java.util.concurrent.Semaphore;
// поток может выполнять код ограниченный semaphore.ecquire и semaphore.release(для одного и того же semaphore)
// захватив этот семафор при наличии свободных разрешений.
public class Semaphore_semaphoreMetods {
	// Создаем объект семафора.
	static Semaphore semaphore = new Semaphore(6); // работают одновременно 6 потока(либо 1 поток которые захвати все 5 разрешений).
	
	public static void main(String[] args) throws InterruptedException {
		Semaphore_semaphoreMetods obj1 = new Semaphore_semaphoreMetods();
		obj1.semaphoreMetods(semaphore);
	}
	
	void semaphoreMetods(Semaphore semaphore) throws InterruptedException{
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество - " + semaphore.availablePermits());
		System.out.println();
		
		semaphore.acquire(); // захват одного разрешения семафора (Метод может порождать исключение)
		System.out.println("Захвачено 1 разрешение семафора с помощью метода semaphore.acquire()");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата одного) - " + semaphore.availablePermits());
		System.out.println();
		
		semaphore.acquire(3); // Захват сразу трех разрешений.
		System.out.println("Захвачено 3 разрешение семафора с помощью метода semaphore.acquire(3)");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата трех) - " + semaphore.availablePermits());
		System.out.println();
		
		int acquireCount = semaphore.drainPermits(); // Захват всех свободных разрешений.
		System.out.println("Захвачены все свободные разрешения семафора в количестве - " + acquireCount + " с помощью метода semaphore.drainPermits()");
		System.out.println("Получение доступных разрешений для семафора. Их текущее количество(после захвата всех осташихся свободных) - " + semaphore.availablePermits());
		System.out.println();
		
		int waitingCount = semaphore.getQueueLength();
		System.out.println("Получение количества потоков(!не запросов) ожидающих семафор через команду semaphore.getQueueLength()");
		System.out.println("Число ожидающих запросов на захват семафора - " + waitingCount);
		System.out.println();
		
		System.out.println("Создаем параллельный поток, в котором проверяем количество ожидающих семафора потоков. Поток наичнает работу с задеожкой, поэтому главный поток успевает запросит еще 3 разрешения");
		NewThread newThreed = new NewThread(semaphore);
		newThreed.start();
		System.out.println();
		
		System.out.println("Пробуем захватить еще 3 разрешение и заново проверяем число ожидающих потоков");
		semaphore.acquire(3); // Тут мы висим, так как все разрешения семафора заняты. Висим до тех пор, пока паралелльный поток, например, не освободит 1 или несколько разрешений(даже если он их не занимал).
		System.out.println("Продолжение работы!");
	}
}

class NewThread extends Thread{
	Semaphore semaphore;
	
	public NewThread(Semaphore semaphore){
		this.semaphore = semaphore;
	}
	
	@Override
	public void run(){
		try {
			sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("(Параллельный поток №1)Число потоков запросивших 1 или несколько разрешений, которые находяться в очереди на ожидании - " + semaphore.getQueueLength());
		
		semaphore.release(3); // Для продолжения работы в методе main после предпоследней команды, необходимо освободить миним 3 разрешения, так как main ждет захвата 3 разрешений.
	}
}



появился новый вопрос: можно ли получить количество разрешений, которые ожидающие потоки запросили ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38770562
Andrew1411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

/**
* Returns the current number of permits available in this semaphore.
*
* <p>This method is typically used for debugging and testing purposes.
*
* @return the number of permits available in this semaphore
*/
public int availablePermits() {
return sync.getPermits();
}
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38770564
Andrew1411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    /**

    /**
     * Returns the current number of permits available in this semaphore.
     *
     * <p>This method is typically used for debugging and testing purposes.
     *
     * @return the number of permits available in this semaphore
     */
    public int availablePermits() {
        return sync.getPermits();
    }


     * Returns an estimate of the number of threads waiting to acquire.
     * The value is only an estimate because the number of threads may
     * change dynamically while this method traverses internal data
     * structures.  This method is designed for use in monitoring of the
     * system state, not for synchronization control.
     *
     * @return the estimated number of threads waiting for this lock
     */
    public final int getQueueLength() {
        return sync.getQueueLength();
    }



и так далее... Смотрите код класса, все станет понятным
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38793195
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №6:

Ключевое слово assert и его использование:

код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
package modifiers;

public class AssertDemo {
	public static void main(String[] args) {
		for (int i = 10; i>0; i--){
			System.out.println(i);
			assert (i == 5) : "i = 5";
		}
	}
}



Вывод на консоль:
Код: java
1.
2.
3.
10
Exception in thread "main" java.lang.AssertionError: i = 5
	at modifiers.AssertDemo.main(AssertDemo.java:7)



Вопросы:
1). Почему не были выведены числа 9 8 7 6 ?
2). По умолчанию проверка утверждений(assert) отключена ?(чтоб заработоло хотя бы так, в Eclipse запускал программу с параметров VM -ea).
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38793201
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreenЯ просто стараюсь изучать джаву по принципу - "Понимание лучше запоминания". Когда понимаешь что и как, сам можешь делать выводы в непонятных ситуациях. А если просто зубрить, то часто неиспользуемое забывается.

к сожалению, во многих компаниях больше хотят слышать от тебя ответы на собеседовании как в школе - "чтоб от зубов отскакивало", при этом похоже, что вопрос опыта применения всего этого для них не так и важен...

что толку вызубрить теорию, если не применял в реале, только не говорите, что все будет ок. как показывает опыт, теория без практики мало что значит...
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38793202
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вопрос отпал - перепутал логику в выражение (нужно i!-=5).
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38793216
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторк сожалению, во многих компаниях больше хотят слышать от тебя ответы на собеседовании как в школе - "чтоб от зубов отскакивало", при этом похоже, что вопрос опыта применения всего этого для них не так и важен...

что толку вызубрить теорию, если не применял в реале, только не говорите, что все будет ок. как показывает опыт, теория без практики мало что значит...

Ну без теории практику не начнешь. Сейчас я java пытаюсь учить следующим образом:
1) Читаю раздел из книги (Шилдт "Полный справочник по Java SE6").
2) Основные моменты помечаю для себя, в виде небольшого конспекта. (пригодится для повторения на собеседование).
3) Пробую прочитанное на простых примерах.

4).потом думал написать какой нибудь простенький сайт на сервлетах + hibernate + spring (правда с ними тоже еще нужно разбираться), а потом с этим багажом пробывать устраиваться на работу. Впринципе можно и без этого пункта обойтись, но для меня принципиальный вопрос - стартовая зп.

Сюда бросаю те вопросы, с которыми самому не получается разобраться.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38793266
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreenдля меня принципиальный вопрос - стартовая зп.
вам до этого пункта, как до Киева рачки )
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38794853
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №7:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
package generic;

public class SimpleParamClass<T> {
	T ob;
	
	public SimpleParamClass(T ob) {
		this.ob = ob;
	}
	
	T getOb(){
		return ob;
	}
	
	void showType(){
		System.out.println("Тип Т - " + ob.getClass().getName());
	}
	
	public static void main(String[] args) {
		SimpleParamClass<String> obj1 = new SimpleParamClass<String>("String");
		obj1.showType();
		SimpleParamClass<Integer> obj2 = new SimpleParamClass<Integer>(new Integer(50));
		obj2.showType();
	}
}



Строку
Код: java
1.
SimpleParamClass<String> obj1 = new SimpleParamClass<String>("String");

я могу записать, как
Код: java
1.
SimpleParamClass<String> obj1 = new SimpleParamClass<>("String");


в чем отличие этих записей ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38795312
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вторая запись - это сокращенная форма, которая появилась в жаве 1.7
Это т.н. Diamond Syntax

отличий вроде как нет.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802168
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто подскажет, какие требования предъявляются к java junior программисту(В плане технологий). т.е. что нужно изучить в первую очередь ?
Например:
1). java SE:
а) ООП.
б) Многопоточность.
в) Исключения.
г) Коллекции.
...
2) ...

хотя в 2-х словах. Спасибо.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802189
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenт.е. что нужно изучить в первую очередь?
Scala изучай в первую очередь.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802217
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно будет и до него доберемся, а пока хотелось бы с java-ой разобраться. Смотрел вакансии, во многих требования отличаются, вот и подумал может есть какой минимальный базовый набор и добрые люди подскажут. А там дальше будет видно, что нужно для работы. Пока обучение движется медленно, много материала для изучения .... (.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802221
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотелось бы услышать мнение людей только начавших работать: что спрашивли на собеседовании, с чем столкнулись на первых этапах работы ?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802316
YamahaR1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczfaustgreenт.е. что нужно изучить в первую очередь?
Scala изучай в первую очередь.
Т.е. вы хотите сказать что для новичков порог вхождения в Scala ниже чем в Java?
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802322
YamahaR1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenНужно будет и до него доберемся, а пока хотелось бы с java-ой разобраться. Смотрел вакансии, во многих требования отличаются, вот и подумал может есть какой минимальный базовый набор и добрые люди подскажут. А там дальше будет видно, что нужно для работы. Пока обучение движется медленно, много материала для изучения .... (.

Collection, Thread, IO, JDBC
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802326
YamahaR1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenМожет кто подскажет, какие требования предъявляются к java junior программисту(В плане технологий). т.е. что нужно изучить в первую очередь ?
Например:
1). java SE:
а) ООП.
б) Многопоточность.
в) Исключения.
г) Коллекции.
...
2) ...

хотя в 2-х словах. Спасибо.

Ну в принципе вы тут все правильно написали, разберитесь с SE а потом переходите на servlets, spring, etc.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802329
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczfaustgreenт.е. что нужно изучить в первую очередь?
Scala изучай в первую очередь.
Ого.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802332
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreenМожет кто подскажет, какие требования предъявляются к java junior программисту(В плане технологий). т.е. что нужно изучить в первую очередь ?
Например:
1). java SE:
а) ООП.
б) Многопоточность.
в) Исключения.
г) Коллекции.
...
2) ...

хотя в 2-х словах. Спасибо.

везде по разному. я недавно был в компании, где от джуниора требовалось знание популярных фреймворков: servlets, jsf, struts, hibernate, maven и еще каких-то.
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802334
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну и спринг тоже
...
Рейтинг: 0 / 0
Вопросы новичка.
    #38802348
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё зависит от организации куда идёшь. Часто бывает что собеседование - уродское.
Тебя спрашивают не то что нужно для работы а какие-то пространные вопросы на тему
hash, serializable, и compareTo. Вобщем лучше всего на первом собеседовании вытрясти
из девочек максимум инфы о том КТО вас будет собеседовать и КАК. И здесь же стоит
оговорить что вас спрашивать НЕ БУДУТ. Например английский. Вобщем нужно
сразу поставить себя как делового чела который ценить деньги и время. Сходу
потребовать стананчик кофе. Сидеть в кресле вразвалку. Шутить на тему
офисов гугла. Шутить на тему доллара.

Удачи.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы новичка.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]