Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-07-2015, 13:33   #1
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
[JAVA] Sincronizzare un processo con l'orario attuale + intervallo

Ciao! Posto il codice per rendere l'idea di quello che voglio fare.
Codice:
final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(new Runnable(){
	@Override
	public void run(){
		esegui();
	}
  }, 0, 1, TimeUnit.MINUTES);
Il metodo esegui(), ad ogni minuto viene processato partendo dall'orario in cui è lanciato il programma.
E questo non va bene, perché lo devo sincronizzare con un altra applicazione esterna (indipendente).
Quindi ho bisogno di fissare un orario e da lì partire con un intervallo di 60 secondi...
Come impostereste la cosa?

Grazie!
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 14:10   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Se devi sincronizzare con un'applicazione esterna, fissare un orario di avvio è concettualmente sbagliato. Chi ti garantisce che l'altra applicazione partirà a quell'ora?
Devi trovare un modo per far comunicare i 2 processi. Di metodi ce ne sono tanti dal più barbino tipo file watcher sul secondo processo e scrittura file sul primo, ad uno qualunque dei vari metodi IPC: Pipe, RMI, JMS, Socket, Webservice SOAP/REST,...
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 14:46   #3
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Il secondo argomento di scheduleWithFixedDelay rappresenta un delay iniziale. Calcola quante unità di tempo devi aspettare, nel tuo caso minuti, e passalo come valore.

Come ha detto tomminno se puoi trova un'altro modo per far comunicare i due programmi. Può sembrare semplice ma avere a che fare con il "tempo" è incredibilmente complicato.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 15:19   #4
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
no... nonononono no... no...
ehmmm.... non ho modo di far comunicare le due applicazioni... voglio dire...
no nonononono no... Mi rifiuto!!!
Credetemi è un lavoraccio e ho già pochi capelli... Volete che li perda completamente??

Ma scusate non esiste, che ne so, un timer che all'x secondo, preciso e spaccato fa quello che deve fare indipendentemente da quando avvio il programma??
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 15:25   #5
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Il secondo argomento di scheduleWithFixedDelay rappresenta un delay iniziale. Calcola quante unità di tempo devi aspettare, nel tuo caso minuti, e passalo come valore.
Scusa eh, ma il codice sopra non fa già quello che hai detto?
Ho un intervallo, 1 minuto per l'esattezza. Ma questo intervallo è calcolato da quando parte il programma. Quindi posso essere in anticipo o in ritardo a seconda dell'orario in cui avvio.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 15:46   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Il secondo argomento che passi tu è 0, non 1
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 16:45   #7
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Scusa eh, ma il codice sopra non fa già quello che hai detto?
Ho un intervallo, 1 minuto per l'esattezza. Ma questo intervallo è calcolato da quando parte il programma. Quindi posso essere in anticipo o in ritardo a seconda dell'orario in cui avvio.
Scusa ma non ho capito il tuo problema. Te vuoi ad esempio avviare la tua applicazione alle 11:00? Usa lo scheduler del sistema operativo per farlo.

Se poi hai il problema di non sapere quale sia l'orario giusto in cui far partire la tua applicazione rientriamo nel discorso di IPC.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 17:48   #8
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Il secondo argomento che passi tu è 0, non 1
certo perché al primo avvio mi aspetto che processi, poi passa il minuto e processa nuovamente.. Da quel momento in poi lavora ad ogni intervallo impostato...
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 17:53   #9
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Scusa ma non ho capito il tuo problema. Te vuoi ad esempio avviare la tua applicazione alle 11:00?
Facciamo che ad un X secondo preciso processa. Per esempio, tengo conto 30:
18:50:30 -> processa
18:51:30 -> processa
18:52:30 -> processa
18:53:30 -> processa
18:54:30 -> processa
...-> processa

L'intervallo è sempre 1 minuto..
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 22:28   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Ah quindi il problema era mantenere costante l'intervallo tra i vari eventi. In questo caso devi usare scheduleAtFixedRate al posto di scheduleWithFixedDelay.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2015, 08:18   #11
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Ah quindi il problema era mantenere costante l'intervallo tra i vari eventi. In questo caso devi usare scheduleAtFixedRate al posto di scheduleWithFixedDelay.
Quindi a tuo dire, con scheduleAtFixedRate, indipendentemente dall'orario in cui lancio il programma, il processo viene eseguito a preciso X secondo con intervallo di 1 minuto?

Se non ti scoccia, puoi postarmi un esempio, per farmi capire meglio?
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2015, 11:48   #12
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Codice:
public class Test {
    private static void doStuff() {
        try {
            Thread.sleep(new Random().nextInt(3000));
        } catch (InterruptedException ignored) {
        }
    }

    public static void main(String... args) {
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        executor.scheduleAtFixedRate(() -> {
            System.out.println(LocalTime.now());
            doStuff();
        }, 0, 5, TimeUnit.SECONDS);
    }
}
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 07:46   #13
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Codice:
public class Test {
    private static void doStuff() {
        try {
            Thread.sleep(new Random().nextInt(3000));
        } catch (InterruptedException ignored) {
        }
    }

    public static void main(String... args) {
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        executor.scheduleAtFixedRate(() -> {
            System.out.println(LocalTime.now());
            doStuff();
        }, 0, 5, TimeUnit.SECONDS);
    }
}
Quindi scheduleWithFixedDelay avvia il processo con il delay da quando termina il precedente, mentre scheduleAtFixedRate ogni X secondi tra un'esecuzione e l'altra non tenendo conto del tempo impiegato nel processare quello precedente.

Direi che ci siamo, ma se io volessi far partire il delay ad un preciso secondo? Questo è quello che sto in realtà, cercando di fare.

Tra l'altro ho notato una cosa strana, per niente familiare nel tuo codice...
Cosa sta ad indicare questo segno ->?? Mai visto!

Grazie!
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 08:53   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Direi che ci siamo, ma se io volessi far partire il delay ad un preciso secondo? Questo è quello che sto in realtà, cercando di fare.
Devi usare il secondo parametro come ti ho detto nel primo messaggio per ritardare la prima esecuzione del numero di secondi necessari.


Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Tra l'altro ho notato una cosa strana, per niente familiare nel tuo codice...
Cosa sta ad indicare questo segno ->?? Mai visto!
Lambda expression. È una roba che hanno introdotto in java 8.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 10:56   #15
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Devi usare il secondo parametro come ti ho detto nel primo messaggio per ritardare la prima esecuzione del numero di secondi necessari.
Ma scusa eh, ma io non devo attendere X secondi, ma far partire il processo a X secondo preciso e spaccato.

Stabilisco, per esempio, che a, XX:XX:30, esegue... Quindi mi aspetto che al secondo minuto sempre a 30 secondi processi. Intendo orario preciso.

Ho provato ad inserire il secondo parametro, ma il problema è che attende tanto quanto il secondo parametro è impostato, ma non tiene conto dell'orario che deve processare. Poi magari ho sbagliato io ma credo che manchi qualcosa.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 11:54   #16
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Ma scusa eh, ma io non devo attendere X secondi, ma far partire il processo a X secondo preciso e spaccato.
Se sono le XX:XX:12 e gli dici di aspettare 18 secondi prima di far partire il tutto poi parte alle XX:XX:30.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 14:50   #17
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Se sono le XX:XX:12 e gli dici di aspettare 18 secondi prima di far partire il tutto poi parte alle XX:XX:30.
Ok, ma perdona se insisto, io non so a che secondo il programma viene attivato. Quindi dovrei fare in modo che se mancano X secondi al secondo stabilito inizia a conteggiare l'intervallo di 1 minuto in modo tale che al minuto successivo al secondo spaccato processa. Questo è il mio problema, non è tanto l intervallo di tempo, ma far partire e sincronizzare il processo.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 15:54   #18
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Ok, ma perdona se insisto, io non so a che secondo il programma viene attivato. Quindi dovrei fare in modo che se mancano X secondi al secondo stabilito inizia a conteggiare l'intervallo di 1 minuto in modo tale che al minuto successivo al secondo spaccato processa. Questo è il mio problema, non è tanto l intervallo di tempo, ma far partire e sincronizzare il processo.
Per saperlo basta semplicemente allocare un oggetto di tipoDate utilizzando il costruttore base.

Cya!
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Metroid Prime Beyond: arriva un trailer ...
Fujifilm GFX Eterna 55: una soluzione co...
Stardew Valley arriva su Switch 2: una c...
E-bike fat legale con "pulsante mag...
Nintendo Virtual Boy: l'accessorio per S...
Popucom si presenta come uno dei miglior...
Super Mario Galaxy il film: l'idraulico ...
Stellantis, contro risposta a BYD: "...
Microsoft evita una sanzione in Europa p...
TCL a IFA 2025: TV Mini LED, smartphone ...
Neanche la politica è salva: l'Al...
I nuovi Pixel 10 in mostra a Milano con ...
Perplexity di nuovo in tribunale: Merria...
AirPods 4 al minimo su Amazon: la versio...
Sam Altman sempre più convinto: l...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v