Java – Un caso di deadlock con join() di Thread

Un po’ di mesi fa ho risposto ad una questione relativa a Java su un forum in cui un utente chiedeva sostanzialmente la seguente cosa: se un thread A acquisisce il lock su un oggetto X e mantenendo questo lock fa un join() su un thread B, si rischia di causare un deadlock? L’utente inoltre domandava anche se il join() rilascia il lock sull’oggetto.

Dal momento che è uno scenario un pochino particolare e interessante, credo sia utile descriverlo meglio in dettaglio.

Continua a leggere

Pubblicato in Java

Java – Generare valori “casuali” con una certa probabilità

Nel precedente articolo Generazione di numeri “casuali” ho descritto le funzionalità che il framework standard di Java mette a disposizione per generare dei numeri “casuali”.

Ci possono essere delle situazioni particolari in cui c’è bisogno di estrarre dei valori casuali che abbiano una certa probabilità specifica di uscita. Esistono due esempi molto classici: la moneta “truccata” e il dado “truccato”. In questo articolo descriverò questi due casi mostrando anche del codice concreto di prova.

Continua a leggere

Pubblicato in Java

Java – Guida al costrutto “for-each”

L’uscita di Java 5, avvenuta nel lontano 2004, aveva portato un gran numero di novità molto importanti tra cui i generics, le annotation, le enum e svariate altre funzionalità. Tra queste novità c’è stata anche la introduzione di un nuovo tipo di ciclo “for” che nella documentazione ufficiale è denominato enhanced for (“for migliorato”) ma viene generalmente chiamato in maniera più amichevole e informale for-each (o senza trattino, for each). Questo termine, tra l’altro, è usato anche in altri linguaggi e contesti quindi è facilmente riconoscibile e comprensibile.

Continua a leggere

Java – Avviare ricerca internet con il browser predefinito

In una applicazione Java “desktop” di tipo grafico (o al limite una applicazione “console”) potrebbe essere necessario, in qualche caso, lanciare un browser esterno per aprire la pagina con i risultati della ricerca su internet fatta tramite uno specifico “motore di ricerca” (es. Google o Bing, giusto per citarne due noti).

Continua a leggere