Professional Documents
Culture Documents
public java.net.URL
public java.net.URL myServer = null;
URL clase representa un localizador de recursos uniforme,
un puntero a un "recurso" en la World Wide Web. Un recurso
puede ser algo tan simple como un archivo o un directorio,
o puede ser una referencia a un objeto ms complicado, como
una consulta a una base de datos o de un motor de bsqueda.
Ms informacin sobre los tipos de URL y sus formatos se
puede encontrar en:
java.net.URLConnection
public java.net.URLConnection myConx = null;
RUN()
El metodo run() es similar al main(), pero para
// threads. Cuando run() termina el thread muere
public void run() {
// Retasamos la ejecucin el tiempo especificado
try {
sleep( retardo );
} catch( InterruptedException e ) {
;
}
Como tercer parmetro lleva otro long, que es cada cuntos milisegundos
queremos recibir el aviso.
//Claseenlaqueestelcdigoaejecutar
TimerTasktimerTask=newTimerTask()
{
publicvoidrun()
{
//Aquelcdigoquequeremosejecutar.
}
};
....
//Aquseponeenmarchaeltimercadasegundo.
Timertimer=newTimer();
//Dentrode0milisegundosavsamecada1000milisegundos
timer.scheduleAtFixedRate(timerTask,0,1000);
TIMERYTIMERTASK
package comunes;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
public class Reloj {
Timer timer = new Timer(); // El timer que se encarga de administrar
los tiempo de repeticion
public int segundos; // manejar el valor del contador
public boolean frozen; // manejar el estado del contador TIMER
AUTOMATICO -- True Detenido | False Corriendo
// clase interna que representa una tarea, se puede crear varias
tareas y asignarle al timer luego
class MiTarea extends TimerTask {
public void run() {
segundos++;
System.out.println(segundos);
// aqui se puede escribir el codigo de la tarea que
necesitamos ejecutar
}// end run()
}// end SincronizacionAutomatica
public void Start(int pSeg) throws Exception {
frozen = false;
// le asignamos una tarea al timer
timer.schedule(new MiTarea(), 0, pSeg * 1000 * 60);
}// end Start
public void Stop() {
System.out.println("Stop");
frozen = true;
}// end Stop
public void Reset() {
System.out.println("Reset");
frozen = true;
segundos = 0;
}// end Reset
}// end Reloj
LONG
"Long" en Java as como en otros lenguajes, es un tipo de dato, como sabes cuando declaras
una variable, sta debe tener un tipo, ste puede ser: "char" para caracter, "double" para
decimal, "String" para cadena, "boolean" para lgico, "int" para entero bien "long" para
enteros ms grandes.
Int y long son datos de tipo entero, "int" para enteros de 32 bits y "long" para enteros de 64 bits,
cuyos rangos son los siguientes:
Tipo: int
Tipo: long
Ejemplo en Java:
int dato1 = 2,147,483,647;
long dato2 = 9,223,372,036,854,775,807;
*Si dato2 fuera del tipo "int" no le podras asignar un nmero mayor a 2,147,483,647.
Resumiendo: Si la variable que usars manejar nmeros que no superen los 2,147,483,647
debe o puede ser declarada de tipo "int", pero si necesitas trabajar con nmeros que superan
ese rango debes usar el tipo "long".
Timertask:
1 import java.util.Timer;
2 import java.util.TimerTask;
3
4 class MyTimerTask extends TimerTask
5{
6
8
9
public MyTimerTask(Timer t)
this.timer = t;
1
1
2
1
3
1
4
1
5
System.out.println((tic++%2==0)?"TIC":"TOC");
if (tic%10==0)
System.out.println("Cancelling task");
this.cancel();
2
0
2
}
}
1
2
2
2
3
2
4
TIMER:
La salida de este programa ser un TIC / TOC alternativamente cada segundo por la
consola, ya que la tarea la programamos cada 1000ms. Es extremadamente fcil, en
principio tenemos que crear un objeto TimerTask que defina la tarea que vamos a ejecutar
dentro de su mtodo run() (el cul tenemos que invalidar por uno nuestro (con @Override).
Luego cargaremos un Timer, y con su mtodo schedule llamaremos a la tarea, indicndole
el tiempo que debe esperar para empezar y el tiempo tras el cul repetir la tarea de forma
indefinida.
Si slo indicamos un argument, la tarea se ejecutar una sola vez dentro de N
milisegundos. Tambin se pueden especificar objectos de tipo Date por argumentos.
Por otro lado, cabe mencionar que junto con schedule() tenemos otro mtodo,
scheduleAtFixedRate, la diferencia es que si ocurren retrasos en la ejecucin de las tareas,
por ejemplo, que est nuestra aplicacin haciendo otras cosas y en lugar de 1000ms, en
una de las ejecuciones se tarden 1500, la tarea se ejecutar a los 500ms para compensar.
Si el retraso es ms grande, se ejecutar varias veces hasta recuperar el ritmo. schedule(),
si se retrasa no har nada, dentro de 1000ms volver a ejecutar de nuevo la tarea.
Hemos visto que el TimerTask lo he creado de forma implcita, para un ejemplo, o para
algo sencillo lo podemos hacer sin miedo. Si ya tenemos una tarea ms grande y
compleja, lo suyo sera crear una clase que extienda TimerTask para esa tarea, pero eso
ya lo veremos ms adelante.
Algo interesante que podemos hacer es llamar a una variable externa, es decir, desde
nuestro TimerTask, llamar a un atributo de TimerEx, aunque no tiene nada que ver con
cmo se hacen los Timers es algo curioso, que a lo mejor produce un pequeo
calentamiento de cabeza.
Y es que a lo mejor queremos acceder a ese atributo, es decir, utilizar algo que est fuera
del TimerTask
timer.schedule(new RemindTask(),
0,
//initial delay
1*1000); //subsequent rate