Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme
ASUS e Noctua tornano a collaborare con la GeForce RTX 5080 Noctua OC Edition, una scheda pensata per chi cerca potenza estrema e silenziosità assoluta. Il nuovo sistema di raffreddamento, con tre ventole Noctua NF-A12x25 G2 da 120 mm e una camera di vapore maggiorata, promette temperature record e rumorosità quasi impercettibile. Non mancano dual BIOS, materiali di qualità e ampie possibilità di overclock. Ma quanto migliora davvero rispetto alla Founders Edition? Scoprilo nel nostro test completo.
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Il più recente robot per la pulizia domestica di Dreame, modello Aqua10 Ultra Roller, abbina un potente motore di aspirazione della polvere a un sofisticato sistema di lavaggio con rullo integrato. Il tutto governato dalla logica di intelligenza artificiale, per i migliori risultati
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Siamo volati fino a Belfast, capitale dell'Irlanda Del Nord, per scoprire il nuovo Realme 15 Pro 5G Game Of Thrones Limited Edition. Una partnership coi fiocchi, quella tra Realme e HBO, un esercizio di stile davvero ben riuscito. Ma vi raccontiamo tutto nel nostro articolo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-10-2011, 10:31   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
[Java] eseguire n azioni in un determinato arco temporale

Ciao ragazzi, mi è stato assegnato un lavoro ma non so come gestire una parte di questo. L'utente configurerà una percentuale, di una determinata azione da compiere, non è importante credo, per ogni fascia oraria, qualcosa del genere

8.00-9.00 : 7%
9.00-10.00: 8%
10.00-11.00: 7%

e via dicendo insomma. Sarebbe anche carino se per esempio quel 7% di azioni da compiere nella prima ora sia più o meno spalmato lungo tutti i 60 minuti e non tutte nel primo minuto per dire

Qualcuno ha mai avuto a che fare con cose schedulate nel tempo?
Se qualcuno ha qualche suggerimento da darmi e/o ha qualche framework utile al caso da consigliarmi gliene sarei molto grato. Grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:30   #2
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Si tratta sempre della stessa operazione?

Quello che mi viene in mente così, al volo è una classe della famiglia Executors.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:47   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da GByTe87 Guarda i messaggi
Si tratta sempre della stessa operazione?

Quello che mi viene in mente così, al volo è una classe della famiglia Executors.
Sì, l'azione è sempre la stessa. Grazie, ci do un'occhiata

Edit: mmm, l'azione è sempre la stessa ma con parametri differenti diciamo.

Ultima modifica di ndakota : 18-10-2011 alle 13:49.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:50   #4
BrutalBass
Junior Member
 
Iscritto dal: Jul 2011
Messaggi: 14
Inserisci un timer e ad ogni millisecondo controlli l'ora del computer e dopo vai di condizioni if...

if(ora del computer == ora)
{
fai questo quello e quell'altro.
}
BrutalBass è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 16:08   #5
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12856
Quote:
Originariamente inviato da BrutalBass Guarda i messaggi
Inserisci un timer e ad ogni millisecondo controlli l'ora del computer e dopo vai di condizioni if...

if(ora del computer == ora)
{
fai questo quello e quell'altro.
}
Difficilmente hai bisogno di una risoluzione temporale così alta (1ms)... o meglio dipende dalle esigenze. Può andarti bene anche una precisione di mezzo secondo (500ms), in questo modo consumi meno cicli macchina e la precisione è comunque accettabile.

Ad ogni modo parliamo di percentuale di tempo o di azione, perché tra le due può esserci una differenza abissale.

Nel primo caso per spalmare basta calcolarsi una sleep opportuna .
Nel secondo caso invece devi quantificare quanto sia l'1% di qualcosa.

Ultima modifica di WarDuck : 18-10-2011 alle 16:12.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 19:16   #6
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Premetto che non ho capito cosa rappresenta la percentuale, quando io ho a che fare con problemi del genere ricorro alle classi Timer e TimerTask che servono proprio per eseguire "qualcosa" dopo un determinato periodo di tempo.

Se riesci ad essere un po' più chiaro, magari posso darti qualche idea in più
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:16   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Dunque si tratta di inviare campagna di sms(insieme di sms con una data di invio comune). In particolare, gli utenti per ogni nuova campagna imposteranno delle percentuali. Per esempio.

8.00 - 9.00: 7%
9.00 -10.00: 8%
10.00-11.00: 8%
11.00-12.00: 7%

E via dicendo per un intera giornata. Il totale degli sms della campagna è risaputo quindi non c'è nessun problema a calcolare le percentuali. Il problema è come inviarne il 7% tra le 8 e le 9 ecc? E' più chiaro ora? Anche se non penso sia molto importante sapere che si tratta dell'invio di messaggi.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:48   #8
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Immagino che conosci la quantità totale di sms per giornata no?
Quindi sai anche il numero effettivo di sms equivalente al 7%.
Allora dovresti anche poterti calcolare l'intervallo di tempo tra un sms e l'altro.

Così puoi utilizzare un ciclo, molto banalmente
Per esempio:
Codice:
while(inviati < totali)
{
invia sms(); sleep(tempoCalcolato);
}
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:53   #9
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
anche se la cosa migliore sarebbe schedulare le azioni su Cron!
Ogni qual volta l'utente sceglie le percentuali e tutto il resto,
il programma dovrebbe effettuare i calcoli suddetti e modificare la tabella di Cron
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:56   #10
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Adesso è decisamente più chiaro

Così a naso direi che col Timer te la puoi cavare tranquillamente.

Un'ipotesi è quella di usare un unico task di invio che scheduli come ricorrente ogni X minuti: sapendo che ore sono e quanti task all'ora vengono eseguiti, puoi sapere quanti e quali messaggi inviare.
Un'altra ipotesi è quella di schedulare tanti task nel momento in cui l'utente dà l'ok, passando al costruttore del task stesso i messaggi da inviare.

La parte su cui bisogna riflettere di più riguarda però quanto spesso e in che modo ti vengono modificate le impostazioni temporali e, soprattutto, l'elenco dei numeri di telefono a cui inviare i messaggi, per essere certo di non "perdere pezzi" per strada
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 06:02   #11
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Che io sappia la classe Timer è deprecata e l'uso è sconsigliato. Dovrebbe essere più facile usare uno ScheduledExecutorService e aggiungere un Runnable tramite scheduleAtFixedRate. Sapendo percentuale e numero di sms da inviare è banale calcolare ogni quanti ms deve chiamare la run().
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 11:33   #12
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Per adesso il problema è rientrato. Per pagare meno riciclano la vecchia soluzione, anche se non fa esattamente quello che vogliono. Probabilmente in futuro riupperò il thread
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:01   #13
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Spilorci!
Qual'era la vecchia soluzione?
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:18   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Dan__88 Guarda i messaggi
Spilorci!
Qual'era la vecchia soluzione?
Si chiama schi... ehm stagista con cellulare
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:55   #15
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Si chiama schi... ehm stagista con cellulare
Tutto ciò mi ricorda uno dei miei primi lavori: geocodifica degli indirizzi (circa 2000) presenti in un file excel; ovviamente all'epoca (16 anni) ero un totale ignorante (e il committente mi disse di fare così) quindi li cercavo un Google Maps (o un analogo) e riportavo le coordinate in excel.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 15:17   #16
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Che io sappia la classe Timer è deprecata e l'uso è sconsigliato. Dovrebbe essere più facile usare uno ScheduledExecutorService [...]
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice
Quote:
A ThreadPoolExecutor that can additionally schedule commands to run after a given delay, or to execute periodically. This class is preferable to Timer when multiple worker threads are needed, or when the additional flexibility or capabilities of ThreadPoolExecutor (which this class extends) are required.
Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 15:41   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice

Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
java.util.Timer non è deprecata infatti, semplicemente nei javadoc di Timer, Java 7, è consigliato l'uso di ScheduledThreadPoolExecutor.
Quote:
Originariamente inviato da Timer javadoc in Java 7
...
This class does not offer real-time guarantees: it schedules tasks using the Object.wait(long) method.

Java 5.0 introduced the java.util.concurrent package and one of the concurrency utilities therein is the ScheduledThreadPoolExecutor which is a thread pool for repeatedly executing tasks at a given rate or delay. It is effectively a more versatile replacement for the Timer/TimerTask combination, as it allows multiple service threads, accepts various time units, and doesn't require subclassing TimerTask (just implement Runnable). Configuring ScheduledThreadPoolExecutor with one thread makes it equivalent to Timer.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:00   #18
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice

Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
Me lo ricordavo diverso il messaggio sui docs.
Chiedo venia.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:55   #19
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Semplicemente la vecchia soluzione non fa la spartizione nelle varie ore. Quindi i clienti chiamano tutti insieme e il call center si intasa. E continuerà a intasarsi a quanto pare
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:57   #20
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Non hanno mai sentito parlare di efficienza evidentemente
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti Recensione Realme 15 Pro Game Of Thrones: un ver...
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
NASA: prosegue lo studio per le missioni...
Halo pronto a diventare multipiattaforma...
Avio prosegue lo sviluppo del propulsore...
GPU da 2.000€ condannata a morte dal cav...
ROG Xbox Ally X vola...senza Windows 11:...
Pasta termica 'killer', attenzione a que...
Il nuovo drone ucraino terrorizza i russ...
Hyundai IONIQ 9 porta l'intelligenza art...
Arlo Ultra 2 in super offerta su Amazon:...
MacBook M3 e GeForce RTX 5090? Possibile...
Da Hinton a Wozniak, ecco chi chiede di ...
Gli autobus elettrici possono essere pi&...
Come aggiornare il PC spendendo poco: GP...
Netflix punta sull'interattività:...
Amazon lancia Blink Mini 2K+ e Blink Arc...
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:07.


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