Jak uruchomić dwie funkcje w tym samym czasie ?

Jak uruchomić dwie funkcje w tym samym czasie ?
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Jak uruchomić dwie funkcje w tym samym czasie ?
np w JavaScript da się zrobić tak:

Kopiuj
timeout("funkcja",1000);
edytowany 2x, ostatnio: Xix
SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:12 miesięcy
0

Skorzystać z wątku.

Zobacz pozostałe 5 komentarzy
SO
Żebyś miał się o co pytać.
Wizzie
grubo, czy druga strona ma lepszy pojazd?
HE
Nie widzę sensu zniżania się do tego poziomu.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Chcę by od razu mi się coś robiło i obok tego coś innego.

edytowany 1x, ostatnio: Xix
niezdecydowany
niezdecydowany
w javie tak sie nie da.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Jak to. A jak są zrobione timery ? One działają podczas gdy funkcja main się wykonuje. No wiem że to jest od javy ale jakbym chciał "monitorować" jakieś kila rzeczy to musi być jakaś możliwość. PS: Jaki Executor Framework ? Co to ?

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Executor Framework to zestaw narzędzi pozwalających na programowanie współbieżne, czyli "robienie dwóch rzeczy na raz".


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
1

Do timerów to konkretnie ScheduledExecutorService

XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

No i w Java tego tak się po prostu nie da ?

2
Xix napisał(a):

Jak uruchomić dwie funkcje w tym samym czasie ?
np w JavaScript da się zrobić tak:

Kopiuj
timeout("funkcja",1000);

JavaScript jest jednowatkowy, programista nie zrobi 2 rzeczy w tym samym czasie. Ten kod startuje timera i po uplywie sekundy funkcja zostanie wywolana w tym samym watku co reszta kodu, moze nawet dzielic ten watek z kodem do pobierania obrazkow, obslugi styli itp. i zablokuje na czas wykonania tej funkcji reszta kodu. Przyklad z d**y.

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
1

W JavaScript nie masz wielowątkowości jako takiej zatem i rozwiązania są inne. Najbliższe temu co pokazałeś w JS jest:

Kopiuj
new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("Po sekundzie");
			}
		}, 1000L);

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
1
Xix napisał(a):

No i w Java tego tak się po prostu nie da ?

Da i to na wiele sposobow. Np:

Kopiuj
new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("dupa"); } }, 1000);

(nie wiem czy dziala, mozliwe ze sie pomylilem w nawiasach itp.)

XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

To jest jedyny sposób ( piszecie że nie więc dajcie jeszcze kilka na wszelki wypadek)? Może być. Ale jak sprawić żeby to się wykonało tylko raz i od razu bez tego "1000" (no bo 0 to chyba nie ). Nie ma w tym nic co mówi który raz się kod wykonuje (no bo tak to bym to if-em załatfił )

edytowany 1x, ostatnio: Xix
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

A co to jest newFixedThreadPool(10); i czy trzeba coś importować (eclipse i tak mi podpowie) ?
PS: Właśnie o to mi chdziło :)

edytowany 1x, ostatnio: Xix
1

Nie da sie zrobic tak, zeby byla pewnosc ze cos sie wykona od razu, rownolegle. To zalezy od wielu rzeczy: OS, implementacji Javy, jaki scheuduler dany OS uzywa itp. Np. jesli zrobisz tak:

Kopiuj
System.out.println("line a");
new Thread(new Runnable() { @Override public void run() { System.out.println("line b"); } }).start();
System.out.println("line c");

to jedyne co jest pewne jest to, ze "line a" bedzie wypisane przed "line c", oraz ze "line b" bedzie wypisane po "line a". Kolejnosci "line b" i "line c" w stosunku do siebie nie jestes w stanie okreslic bez dodatkowej synchronizacji. Ale poki co to tematy dla ciebie zbyt zaawansowane.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Dobra, dzięki. A co do tematów zaawansowanych to sobje kupię książkę chyba. Możecie mi doradzić jaką. No bo podstawy umiem czyli pentle, klasy, objekty itp.

SO
"Pentle", klasy i "objekty" to są podstawy podstaw samych podstaw, więc na razie nie bierz się za zaawansowane rzeczy. Na początek to zainwestuj w słownik bo w każdej wiadomości robisz kilka błędów ortograficznych.
Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
1

Java Concurrency in Practice, ale IMO, widząc twoje obecne wątki, zostaw to sobie na trochę później i popracuj nad podstawami.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Czyli ? Nad czym konkretnie ?

azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
1

@Xix nad intensywnym przysiedzeniem nad jednym, konkretnym językiem, najlepiej ukierunkowanym na jedną specjalizację, która ci sie podoba, żebyś z przyjemnościa i efektywnie złapał podstawy które wyjaśnią ci problemy które aktualnie posiadasz

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
1

Książka: http://helion.pl/ksiazki/java-podstawy-wydanie-ix-cay-s-horstmann-gary-cornell,javpd9.htm
Poza tym jest bardzo dobre Java Tutorials, które zawsze opisuje świeżą wersję Javy: https://docs.oracle.com/javase/tutorial/


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
azalut
@Xix na totalny start to nawet po pl możesz się uczyć
XI
no byłoby dobrze bo po angielsku to nie umiem świetnie (znam niektóre słowa ale na internetowych stronach napisanych po angielsku nie wszystko rozumiem)
azalut
@Xix to akurat masz czas ucząc się z polskich źródeł, żeby nadrobić angielski, bo serio: bez niego na pewnym etapie nadejdzie stagnacja
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

No a co to są te podstawy. No bo pętle objekty klasy itp. to są podstawy z podstaw tak ? To czego mam się uczyć ? Samych nowych klas czy dalej czegoś "technicznego" ?

azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
0

ucz się podstawowych elementów składni języka: przyjmijmy, że będzie to Java, jakieś fory/while/switch jak to działa, później możesz troche "ósemki" tj lambda, method reference
później oop: obiekty, klasy, klasy anonimowe, klasy abstrkacyjne, interfejsy, dla ósemki też: funkcje, FunctionalInterface itp

  • ważne, podstawowe klasy javy, jakieś StringBuildery, może jakieś okienka (mi sie na tym fajnie uczylo podstaw), metody do "obróbki" stringów, Timer, Comparable, Runnable, uruchomić jakiś wątek, zobaczyć jak to wygląda

jednym dwoma słowemami "pobawić się" językiem :P

edytowany 1x, ostatnio: azalut
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
0
Xix napisał(a):

No a co to są te podstawy. No bo pętle objekty klasy itp. to są podstawy z podstaw tak ? To czego mam się uczyć ? Samych nowych klas czy dalej czegoś "technicznego" ?

Przerób całą tą książkę co ci podałem "Java. Podstawy. Wydanie IX Autorzy: Cay S. Horstmann, Gary Cornell" i będziesz znał podstawy. Jak coś znasz to i tak poczytaj od deski do deski. Jedyną rzeczą, którą możesz pominąć są 10.3 Aplety, bo aplety są mocno blokowane w nowych wersjach Javy i chyba miałbyś problem z ich przetestowaniem.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Ja wiem co to switch itp. Nie rozumiem:
klasy abstrkacyjne
kalsy anonimowe
FunctionalInterface
Comparable
Runnable
lambda
method reference
StringBuildery ( chyba nigdy tego nie widziałem )

Ale tak źle ze mną nie jest że bym nie znał:
Timer
obróbka stringów (jeśli chodzi o substring itp. to znam już od dawna bo na YouTube są świetne kursy C++)
klasy
obiekty
interfejsy

Wiele znam ale może to nie jest jeszcze ułożone bo C++ trochę się różni. Wiem jak się tworzy okna w javax.swing

Zaczne się jeszcze uczyć C#. Ma tyle uproszczeń że nie wiem czy nie jest lepszy niż Java.
I czy konstruktor zawsze się wywołuje kiedy tworzę objekt czy trzeba zrobić tak: klasa objekt = new klasa(); ? Wiem że to podstawy ale nigdy tego nie sprawdzałem a często programów nie pisze.

LW
Zaręczam Cię, że obróbka Stringów (regexpy) na poziomie OCPJP są dużo trudniejsze od tego co wymieniłeś w "Nie rozumiem".
SO
Połowa rzeczy z kategorii umiem i nie umiem wzajemnie się wyklucza. Piszesz, że umiesz klasy, ale nie rozumiesz klas abstrakcyjnych, ani anonimowych. Nie wiesz co to Comparable/Runnable, ale dalej piszesz, że znasz interfejsy... Przysiądź w końcu do jakiegoś kursu/książki dla początkujących i przerób ze zrozumieniem.
XI
Dopiero jak sobie kupię książkę :) ale to już blisko tylko nie wiem czy Java czy C#. Co wybrać ? I dajcie jakiś link do kursu bo ja musiałbym wszystko w google wpisywać a tak to by było po kolei. Zresztą nie wszystkie kursy są dobre.
LW
Sciagnij sobie cos do OCAJP
0
Xix napisał(a):

Zaczne się jeszcze uczyć C#. Ma tyle uproszczeń że nie wiem czy nie jest lepszy niż Java.

Lepszy niz Java? Zdecydowanie tak (moim zdaniem). Prostszy? Latwiejszy do nauki? Zdecydowanie nie - ma znacznie wiecej pojec, wiecej mozliwosci, skladnia bardziej skomplikowana bo i sam jezyk wspiera wiecej. async, yield, propertiesy z prawdziwego zdarzenia, partial classes, static classes, delegaty, eventy - mozna wyliczac bez liku.

XI
Wylicz wszystkie :) delegaty to coś ajkby wskażniki ale bezpiczniejsze (przed momentem sptałem coci wiki :) ). Reszty nie rozumiem . Ale: klasa objekt = new klasa() { napis="coś" } ;
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
0

Niewiele jeszcze umiesz. A do C++ nie ma sensu robić zbyt silnych analogii. Zwykle różne platformy mają inne filozofie, więc zbyt mocne wyszukiwanie analogii doprowadzi do zamieszania w głowie.

W Javie by stworzyć obiekt trzeba użyć słówka new praktycznie zawsze. Czasem jest to jednak ukryte gdzieś w metodzie lub obiekt może zostać wstrzyknięty (jeśli używasz wstrzykiwania zależności). Zawsze jednak obiekt jest tworzony za pomocą new albo, rzadko i głównie we frameworkach, za pomocą refleksji (Class.newInstance lub podobne).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

Czyli konstruktor zawsze się wykona ?
NP:

Kopiuj
 public class x
 {
    int z;
    x()
    {
       z= 10 ;
    }
 }

x y ;

Co jest w z ?
Teraz się pogubiłem :)

edytowany 2x, ostatnio: Xix
0

W z nic nie ma, bo nie ma zadnego z. Ty tylko zdeklarowales referencje na x, ale nie utworzyles zadnej instancji. Java to nie cpp.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 9 lat
  • Postów:231
0

I wszystko stało się jasne. A jak to działa W C# ? Tak samo ?
Dzięki.

XI
Chwała wam !
katelx
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Hong Kong
0

(ubolewam bo prawie nie zauwazylam nowego watku autorstwa pana @Xix).
co do pewnosci wywolania konstruktora w c# to mozesz sie troche przeliczyc, przy deserializacji konstruktor nie jest wolany wiec jesli twoja klasa wspiera serializacje to miej sie na bacznosci.

ZA
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 8 lat
0

@katelx nie bardzo rozumiem. Serializujesz obiekt, który już jest utworzony i ma jakiś stan (tak jest i w c# i w javie). W takiej sytuacji po co miałby się uruchamiać jeszcze raz?

Koziołek
deserializacji, a nie serializacji
ZA
a to nie jest tak że deserializujesz obiekty wcześniej zserializowane?
Koziołek
deserializacja === odczyt.
katelx
@zadroozyn zdecydowanie. czyli scenariusz jest nastepujacy 1) uzywasz konstruktora aby stworzyc obiekt 2) serializujesz go 3) deserializujesz (i w tym momencie konstruktor nie jest odpalany
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)