Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2008, 15:16   #1
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
[Java]misurazioni di intervalli in millisecondi

per progetto scolastico mi sono ritrovato a realizzare una simulazione di una sfida a rigori tra due squadre di calcio con la concurrency programming in Java

il progetto da me gia ultimato e funzionante va egregiamente con una pecca solo su un punto:

-il monitor Arbitro che gestisce due metodi sincronizzati (Tira per il calciatore e Para per il portiere) dovrebbe controllare due ritardi:

-il calciatore al momento del fischio deve avere un ritardo variabile prima del tiro, se questo ritardo supera i 10ms il tiro viene annullato

-il portiere al momento del fischio prima di buttarsi deve avere un ritardo minimo di 2ms

il ritardo sul calciatore ho pensato di introdurlo con una funzione matematica : (long)(16*Math.random()) che dovrebbe restituirmi un numero compreso tra 0 e 15

con il metodo System.currentTimeMillis() ho notato che mi arrotonda la cifra segnalandomi lo stesso risultato al momento della differenza tra i due momenti(prima del ritardo e dopo): o 0 o 15(0 se il ritardo è compreso tra 0 e piu o meno 7 , e 15 per valori compresi tra 7 e 15) (cercando in internet ho anche scoperto che e' dipendente dal sistema operativo) non consentendomi una misurazione precisa che cerco di effettuare prima di eseguire il ritardo variabile e dopo di questo >_>

in pratica come posso effettuare una misurazione più precisa?cercando in internet ho letto post relativi ad hardware dedicato o addirittura programmazione a basso livello per ovviare a questo problema ma e' ancora cosi?

tra l'altro per il ritardo ho introdotto una sleep pensando che siccome non viene rilasciato il lock sul processo che esegue il metodo sincronizzato(come invece sarebbe accaduto con una wait) sarei stato più preciso nella misurazione, ho aggiunto questa nota per sapere se sbaglio ed eventualmente cosa ihih

vi ringrazio per una eventuale risposta ^_^
Buona giornata a tutti

Ultima modifica di m.distrutti : 08-06-2008 alle 15:23.
m.distrutti è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 15:57   #2
Josualba84
Junior Member
 
Iscritto dal: Jun 2008
Messaggi: 7
Ciao!!

Anche io sto facendo il tuo stesso progetto...e come te ho lo stesso problema...oltre a tanti altri...

posso chiederti una cosa??...

...Come hai gestito il portiere??
Josualba84 è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 16:23   #3
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Una volta calcolato il ritardo ed effettuata la sleep con lo stesso sei perfettamente allineato con la richiesta..in quanto ai fini della valità del tiro basta effettuare un confronto(tra 2 int senza considerare le unita di misura) tra i 10ms stabiliti e il ritardo randomico introdotto.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 16:35   #4
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
Quote:
Originariamente inviato da Josualba84 Guarda i messaggi
Ciao!!

Anche io sto facendo il tuo stesso progetto...e come te ho lo stesso problema...oltre a tanti altri...

posso chiederti una cosa??...

...Come hai gestito il portiere??
scusa il ritardo della risposta

certo non e' stato proprio un metodo elegante ,l'ho tirato giu velocemente dato che non ho molto tempo da dedicarci >_>,

in pratica ho creato due flag

di default i portieri nella mia prima implementazione si buttavano concorrenzialmente nel metodo Para sincrono del monitor e rimanevano in wait affinchè l'arbitro fischiava eseguendo una notifyAll su di essi e dopo aver controllato che la squadra che deve parare sia quella di appartenenza eseguo la parata...

il portiere non deve pero fossilizzarsi su un metodo soltanto perchè dovra waittarsi sia in para che in tira aspettando il fischio dell'arbitro , considera cmq che la squadra iniziale e' casuale percio uno all'inizio si waittera in para e l'altro in tira e si alterneranno

aggiungendo i flag hannoParato e HannoTirato li faccio uscire dal metodo corrente per spostarsi nell'altro

...ora la spiegazione e' un po contorta, se mi lasci il contatto messanger magari per pm ti faccio vedere tutto^_^
m.distrutti è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 18:39   #5
Josualba84
Junior Member
 
Iscritto dal: Jun 2008
Messaggi: 7
Ok...ti ringrazio...ti ho inviato un messaggio privato con il mio contatto...

Grazie!!
Josualba84 è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 20:58   #6
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
System.nanoTime() l'hai già provato?
dovrebbe avere una precisione di circa 1ms su xp se non sbaglio...
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2008, 21:07   #7
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
System.nanoTime() l'hai già provato?
dovrebbe avere una precisione di circa 1ms su xp se non sbaglio...
sisi alla fine ho guardato quella funzione nell'api e dopo averla provata da una precisazione più dettagliata ^^

grazie mille per le risposte
m.distrutti è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Intel Xeon 6 con P-core è la CPU ...
Telepass e TIM: la mobilità integ...
Deep Tech Revolution: le cinque startup ...
Leapmotor, sostenuta da Stellantis, ragg...
Isar Aerospace e Astroscale stringono un...
Donut Lab, test di ricarica con Verge TS...
Polestar, arriva un nuovo finanziamento ...
Friggitrice ad aria, tutto quello che de...
BYD lancia la nuova campagna per il bran...
Samsung Galaxy Book4 in offerta: portati...
HONOR MagicPad 4: più sottile, pi...
JBL Tune Flex 2 in forte sconto su Amazo...
Galaxy S26 Ultra Enterprise Edition crol...
OMO X: la prima moto elettrica auto-bila...
NVIDIA sta fornendo circa il 20% in meno...
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: 20:04.


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