Está en la página 1de 15

Nivel avanzado

Manual del alumno

(Versin 6, JDK 1.6.0)

SolucionJava.com

Reproduccinprohibida

Versin2.0

CopyrightCdricSimon,2009

Ing.CedricSimonTel:22680974Cel:88882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:www.solucionjava.com

Curso de programacin
en Java

CursodeprogramacinenJava

Pagina2/15

1 ndice
1 ndice..........................................................................................................................................................................................................2
2 Introduccin al curso.................................................................................................................................................................................3
2.1 Objetivo de este curso.......................................................................................................................................................................3
2.2 Manual del alumno............................................................................................................................................................................3
2.3 Ejercicios prcticos............................................................................................................................................................................3
2.4 Requisitos para atender a este curso...............................................................................................................................................3
2.5 Soporte despues del curso.................................................................................................................................................................3
3 Conexin a base de datos...........................................................................................................................................................................4
3.1 Objetivo del capitulo.........................................................................................................................................................................4
3.2 Driver ODBC.....................................................................................................................................................................................4
3.3 Driver JDBC......................................................................................................................................................................................4
3.4 Conexin.............................................................................................................................................................................................4
3.5 Ejecucin de instrucciones SQL.......................................................................................................................................................5
3.6 Paquete SolucionJava........................................................................................................................................................................6
4 Reciclaje de memoria.................................................................................................................................................................................7
5 Clases interesantes.....................................................................................................................................................................................8
5.1 Clase StringBuilder...........................................................................................................................................................................8
5.2 Clase ArrayList..................................................................................................................................................................................8
6 Streaming...................................................................................................................................................................................................9
7 Variables de sistema.................................................................................................................................................................................11
8 Compresin y empaquetado de aplicacin..............................................................................................................................................12
9 Threads.....................................................................................................................................................................................................13
10 Ejercicios................................................................................................................................................................................................14
11 Esquema de la base de datos..................................................................................................................................................................15

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina3/15

2 Introduccinalcurso
2.1 Objetivodeestecurso
EnestecursovamosaverunasopcionesavanzadasdellenguajeJava.Estabaselesvaaservirporcualquiertipode
aplicacinquedesearealizar:aplicacinindependiente,applet,paginawebenJava

2.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanualcontieneun
resumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonales
paracompletasestemanual.

2.3 Ejerciciosprcticos
Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarla
integracindelamateria.

Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprctica
ensuhogar.

2.4 Requisitosparaatenderaestecurso
SerequiereunconocimientodebasedellenguajeJava,ylaprogramacinorientadoaobjeto.tambinseneceistaun
conocimientodebasedellenguajeSQL.
Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesal
profesor.

2.5 Soportedespuesdelcurso
Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,puedesescribirtuspreguntasa
cedric@solucionjava.com.
Parainformacionessobreotroscursos,visitaelsitiowebwww.solucionjava.com.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina4/15

3 Conexinabasededatos
Cuandosedesarrollaunaaplicacin,muchasvecessenecesitaconectaraunabasededatos.Javapermiteconectarse
alasmayorasdelasbasededatos,portantoqueexisteundriverODBComejor,JDBC.

3.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdecrearunaconexinaunabasededatosyejecutarinstruccionesenla
basededatos.EstecapitulonoesunainiciacinalSQLnialmanejodebasededatos.

3.2 DriverODBC
UndriverODBC(OpenDatabaseConnectivity)permiteutilizarundrivergenricoparaconectarseaunebasede
datos.AsJavaseconectaaldriverODBC,yeldriverODBCseconectaalabasededatos.Eselmediomsfcilde
conectarseaunabasededatos,peroesmuchomenoseficientequeundriverJDBC.

3.3 DriverJDBC
UndriverODBC(JavaDatabaseConnector)esundriverdiseadoparaconectarseaunabasededatos.Estedriver
esespecficoaunabasededatos(yavecesaunaciertaversindeunabasededatos).
EldriverJDBCseconectadirectamentealabasededatos,ycomolestadiseadoparaestabasededatos,tiene
normalmentemuchasmsopciones,ymenosrestricciones,queelODBC.

3.4 Conexin
Bsicamente,hayprimeroquecargareldriverJDBC,luegohayqueconectarsealabasededatos,ysilograseso,
puedesejecutartusconsultasSQL.
Ejemplo:
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestDb {
public static void main(String[] args) {
java.sql.Connection con = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName(
"com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontr el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina5/15

} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Fin");
}
}

3.5 EjecucindeinstruccionesSQL
ParapoderejecutarinstruccionesSQLenlabasededatos,hayqueserconectadoalaabasededatos.
Unavezconectado,hayquecrearlainstruccin,ejecutarla,yeventualmenterecogerelresultado.
Dependiendodesilainstruccindeberaderegresardatos,ono,sevautilizarunalistaderesultados(ResultSet)o
solamenteejecutarlainstruccin.
DeJavasepuedentambinllamaraprocedimientosyfuncionesdelabasededatos.
Paraevitarproblemasconjuegosdecarcterocaracteresespeciales,esmejorutilizarCallableStatementy
PreparedStatement.
Ejemplo:
import java.sql.*;
public class TestSql {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
Statement s = null;
ResultSet rs = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName("com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontr el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out
.println("Lista de empleados con salario inferior a $30,000");
s = con.createStatement();
rs = s
.executeQuery("select concat(first_name,' ',last_name) as full_name from
employee where salary < 30000");
// "select first_name||' '||last_name as full_name from employee where salary < 30000");
while (rs.next()) {
System.out.println(rs.getString("full_name"));

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina6/15

}
} catch (java.sql.SQLException e) {
System.out.println("Unable to step thru results of query");
showSQLException(e);
return;
}
try {
System.out
.println("===============================================");
System.out
.println("Lista de empleados con salario entre $30,000 y $40,000");
ps = con
.prepareStatement("select concat(first_name,' ',last_name) as full_name from
employee where salary between ? and ?");
// "select first_name||' '||last_name as full_name from employee where salary between ?
and ?");
ps.setInt(1, 30000);
ps.setInt(2, 40000);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("full_name"));
}
} catch (java.sql.SQLException e) {
System.out.println("Unable to submit a static SQL query.");
showSQLException(e);
return;
}
} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (rs != null) {
rs.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (ps != null) {
ps.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (con != null) {
con.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
System.out.println("Fin");
}
}

private static void showSQLException(java.sql.SQLException e) {


java.sql.SQLException next = e;
while (next != null) {
System.out.println(next.getMessage());
System.out.println("Error Code: " + next.getErrorCode());
System.out.println("SQL State: " + next.getSQLState());
next = next.getNextException();
}
}

3.6 MarcodetrabajodeSolucionJava
ElmarcodetrabajodeSolucionJavatraeunaclasequefacilitalaconexinalabasededatos.
Parausarla,creaunaclasequeextiendecom.solucionjava.db.ConnectDBysobreescribeelmetodo
initConnectionVariables().
VerladocumentacionJavadelAPIparamasinformacin.
TodoslosarchivosrelacionadosalmarcodetrabajodeSolucionJava.comsepuedendescargardesde
http://solucionjava.sourceforge.net.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina7/15

4 Reciclajedememoria
Javatieneunmanejointernodelamemoria,yperidicamente,reciclalamemoriaquenoesmsutilizada,
destruyendolosobjetossinreferenciaenlamemoria.Esteaccinsellamagarbagecolleccin.
ComoJavapuedeconsumirbastantememoria,esimportantedenocrearobjetosquenosonnecesarios,ydeliberar
objetosquenosonmsnecesarios.
Unmtodo(System.gc();)permitetambindepreguntaraJavadeempezarelreciclajedelamemoria,peronoespor
esoqueelreciclajesertotalnisiempreinmediato.Llamaralarecoleccindebasuratienetambinuncostoanivel
deperformancias(probarconejemploaquabajo).
Paraqueunobjetoseacandidatoalreciclaje,elnodebeestarligadoanadautlizado.Paraestarseguroquesuobjeto
seracandidato,esmejormeterloanulo(null)demaneraexplicita.
Silarecoleccin'forzada'dememoriapuedeayudarencasosdeprogaramasusandomuchasmemorias,esamanera
soloretardaraunpocoelproblema,peronoloresolver.Hayqueinvestigarlafuentedelusodememoriaycorregirlo,
mejorqueutilizarlarecoleccinforzadadememoria.
Parainvestigarlafuentedelproblema,esposibledeconocerlamemoriadelJVMquequedadisponibleutilizandoel
metodofreememory()delobjetoRuntime.VerenladocumentacindeJavaparamasdetalles.

Ejemplo(probarconSystem.gc()ysin):
public class TestMemory {
public static void main(String[] args) {
String test="";
Runtime rt = Runtime.getRuntime();
for (int i=0;i<1000;i++) {
System.out.println("Memoria total: "+rt.totalMemory()+" - Memoria libre: "+rt.freeMemory());
test+="ffffffffffffffffffffffffffffffffffffff";
System.gc();
}
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina8/15

5 Clasesinteresantes
5.1 ClaseStringBuilder
LaclaseStringBuilderpermitedeahorarmemoriaencasodeunacadenadecaracteresquemuchocambiaenel
tiempo(concatenacion,reemplazo,...)
LaclaseStringcreaunnuevoobjetoacadamodificacindelobjeto,StringBuilderno.
StringBuildertienemenosmetodosqueString,perotienelasprincipales.VerladocumentacindeJavaparamas
informacin.

5.2 ClaseArrayList
LaclaseArrayList,delpaquetejava.utilpermiteconstruirarreglosdetamaodinamico,ydepoderordenarsus
valores.LosarreglosnormalesenJavatienenuntamaodefinidoalinicializarelarreglo,ynosepuedecambiarsin
crearotroobjeto.ArrayListpermitemanejarestosarreglosporloscualeseltamaoesdinamico.Hayquenotarque
unarreglonormalJavaesmuchomasrpidoderecorrerqueunArrayList,peroelArrayListtienesuusocuandono
seconoceeltamaomaximumalinicializarelarreglo.
VerladocumentacindeJavaparamasinformacin.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina9/15

6 Streaming
Elstreamingpermitedecrearunflujodedatos.Estopermiteleery/oarchivos(textos,sonidos,imgenes,....).Es
tambinposiblesacarelnombre,tamao,...deunarchivo.
Elstreamingesporejemplonecesarioparainsertaroleerobjetosmuygrandeenlabasededatos(BLOB,CLOB,...),
omostrarunaimagenenJSP.Conelflujosepuedenmanejarcualquiertipodearchivobinario.
Losstreamspuedenmanejarentradacomosalidadeflujos.
Ejemplo1:Listararchivos

import java.io.*;
public class TestArchivo
{
public static String leer()
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try
{
return br.readLine();
}
catch(Exception e)
{}
return "";
}
public static void main (String[] args)
{
System.out.println("Indique nombre de subdirectorio");
System.out.println("Trayectoria absoluta, por ej: C:\\java");
String nomdir = leer();
File arch = new File(nomdir);
if (arch.exists())
if (arch.isDirectory())
{
System.out.println("Contenido de "+nomdir);
String arr[] = arch.list();
for(int j = 0; j < arr.length; j++)
{
File otro = new File(nomdir + "\\"+arr[j]);
if (otro.isDirectory())
System.out.println(arr[j]+ " <DIR>");
else
System.out.println(arr[j]);
}
}
else
System.out.println(nomdir+" no es un directorio");
else
System.out.println("No existe");
}
}

Ejemplo2:LeerarchivoviaURL
import
import
import
import

java.io.BufferedReader;
java.io.InputStreamReader;
java.net.URL;
java.net.URLConnection;

public class LeerURL {


public LeerURL() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
if (args[0]==null)
System.out.println("Se espera un parametro al llamar al metodod main!");
URL miURL=null;
try {
miURL = new URL("http://192.168.0.10/"+args[0]);
URLConnection yc = miURL.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;
System.out.println("<h1>Leyendo archivo</h1><hr>");
// Leer archivo
while ((inputLine = in.readLine()) != null)

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava
{

Pagina10/15
try {
System.out.println(inputLine);
int lineSize=inputLine.length();
System.out.println(lineSize);

}
catch (Exception e1) {
in.close();
in=null;
e1.printStackTrace();
System.out.println("Error leyendo el archivo. "+e1);
break;
}
} // while
//
System.System.out.println(inputLine);
in.close();
in=null;

}
catch(java.io.FileNotFoundException e1)
{
System.out.println("<hr><h1><font color=red>El archivo http://192.168.0.10/'"+args[0]);
}
catch (Exception e) {
System.out.println("Error: >"+e);
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina11/15

7 Variablesdesistema
EnJava,esposiblederecuperarciertasvariablesdesistema.Ciertasvariablesestanconstantesporunsistemo
operativodado,otrassepuedendefiniromodificaralencederlaJVMutilizandolaopcion-D<nombre>=<valor>.
Ejemlo:
import
import
import
public

java.awt.GraphicsDevice;
java.awt.GraphicsEnvironment;
javax.swing.UIManager;
class SystemProp {
public static void main(String[] args) {
try {
String msg = "Propriedades del sistema\n";
msg = msg + "Version de Java: " +System.getProperty("java.vm.version") + "\n";
msg = msg + "Vendor: " +
System.getProperty("java.vm.vendor") + " - Web:" +
System.getProperty("java.vendor.url") + "\n\n";
msg = msg + "Version de Windows: " +
System.getProperty("os.name") + " " +
System.getProperty("os.version") + " " +
System.getProperty("sun.os.patch.level") + "\n";
msg = msg + "OS architectura: " +System.getProperty("os.arch") + "\n\n";
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
msg = msg + "Resolucin de pantalla: " +
(int) env.getMaximumWindowBounds().getMaxX()+" x "+(int) env.getMaximumWindowBounds().getMaxY() + "\n";
GraphicsDevice device = env.getDefaultScreenDevice();
int bytes = device.getAvailableAcceleratedMemory();
int mbytes = bytes /1048576;
msg = msg + "Memoria grafica: " +
mbytes + " MB\n\n";
msg = msg + "Look & Feel disponibles:\n ";
UIManager.LookAndFeelInfo[] info = UIManager.
getInstalledLookAndFeels();
for (int i = 0; i < info.length; i++) {
// Get the name of the look and feel that is suitable for display to the user
String humanReadableName = info[i].getName();
String className = info[i].getClassName();
msg = msg + "
"+humanReadableName + " - " + className+"\n";
}
msg = msg + "\n";
msg = msg + "Archivo del programa: " +System.getProperty("user.dir") + "\n\n";
msg = msg + "CPU: " +System.getProperty("sun.cpu.isalist") + "\n\n";
msg = msg + "Usuario: " +System.getProperty("user.name") + "\n";
msg = msg + "Idioma: " +System.getProperty("user.language") + "\n";
msg = msg + "Encoding: " +System.getProperty("sun.jnu.encoding") + "\n\n";
msg = msg + "Tempdir: " +System.getProperty("java.io.tmpdir") + "\n";
msg = msg + "Java CLASS path: " +System.getProperty("java.class.path") + "\n\n";
msg = msg + "Java path: " +System.getProperty("sun.boot.class.path") + "\n\n";
msg = msg + "Java LIB path: " +System.getProperty("java.ext.dirs") + "\n\n";
msg = msg + "Windows path: " +
System.getProperty("java.library.path") + "\n\n";
System.out.println(msg);
} catch (Exception ex) {
System.out.println("Error in SystemProp() constructor" +
ex.getMessage());
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina12/15

8 Compresinyempaquetadodeaplicacin
Parareducireltamaodeunaaplicacinasicomojuntartodoslosarchivosjuntos,sepuedecrearunarchivoJarque
seraleidoydescromprimidoporJava.
ElusodeunmanifestpermiteindicaraJavacualeslaclasequehayqueutilizarparainiciarlaaplicacin,y
eventualmenteindicarcualesotrospaquetesJAR(drivers,...)hayqueincluirenelclasspath.
LoscdigosJavaestancasisiempredisptribuidosenarchivosJar(drivers,aplicaciones,...).ElarchivoJarpuede
contenerotrosarchivosquelosarchivosJava,comoimagenes,textos,sonidos,...
Existenprogarmas(comoporejemploJsmooth)queescondenunarchivoenunarchivoEXEparacorrerbajo
Windowscomounaaplicacinusualdewindows.
Parainiciarlaaplicacin,seutilizalaoption-jar deJava.Ejemplo:java

-jar miArchivo.jar

Ejemplodemanifest.txt:

Manifest-Version: 1.0
Main-Class: prueba.Main
Created-By: Cedric Simon www.SolutionJava.com
Class-Path: mysql-connector-java-5.1.5-bin.jar

Ejemplo:

jar -cmf manifest.txt prueba.jar prueba/*.* dbaccess/*.*


Este va a crear un archivo prueba.jar continiendo los archivos de la carpeta corriente mas los de las carpetas (paquetes) prueba
y dbaccess. El manifest.txt indica que la clase de arraque (que contiene el metodo main) es la clase Main del paquete prueba, y
hay que incluir el archivo mysql-connector-java-5.1.5-bin.jar (como mencionado aqu, se encuentra en la misma carpeta que
prueba.jar) en el classpath.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina13/15

9 Threads
Lasthreadssonhilosdeejecucin.Javapordefectotrabajaconsolounhilodeejecucin,perosepuedecrearvarios
hilosdeejecucinparaejecutarvariastareaselmismotiempo.
Losthreadsohilosdeejecucinpermitenorganizarlosrecursosdelordenadordeformaque
puedahabervariosprogramasactuandoenparalelo.Unhilodeejecucinpuederealizarcualquiertareaquepueda
realizarunprogramanormalycorriente.Bastarconindicarloquetienequehacerenelmtodorun(),queeselque
definelaactividadprincipaldelasthreads.
Losthreadspuedenserdaemononodaemon.Sondaemonaquelloshilosquerealizanen
background(enunsegundoplano)serviciosgenerales,estoes,tareasquenoformanpartedelaesenciadelprograma
yqueseestnejecutandomientrasnofinalicelaaplicacin.Unthreaddaemonpodraserporejemploaqulqueest
comprobandopermanentementesielusuariopulsaunbotn.UnprogramadeJavafinalizacuandosloquedan
corriendothreadsdetipodaemon.Pordefecto,ysinoseindicalocontrario,losthreadssondeltiponodaemon.
Javaproporcionamtodosparamanejarcadahilodeejecucin.Estosmtodospermitenentreotrosdeparar,
cancelar,reanudarhilosdeejecucin,ascomodefinirprioridadesentrehilos.Ejemplosdemtodos:wait(),sleep(),
notify(),suspend(),resume(),stop(),...
EjemplodeThread:

public class SimpleThread extends Thread {


// constructor
public SimpleThread (String str) {
super(str);
}
// redefinicin del mtodo run()
public void run() {
for(int i=0;i<10;i++)
System.out.println("Este es el thread : " + getName());
}
}
public class TestThread {
public static void main(String[] args) { // metodo principal
SimpleThread miThread = new SimpleThread("Hilo de prueba");
miThread.start();
} // fin de metodo Main
} // fin de clase TestThread
Ejemplo de Runnable:
public class SimpleRunnable implements Runnable {
// se crea un nombre
String nameThread;
// constructor
public SimpleRunnable(String str) {
nameThread = str;
}
// definicin del mtodo run()
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Este es el thread: " + nameThread);
}
}

public class TestRunnable {


public static void main(String[] args) { // metodo principal
TestRunnable miTest = new TestRunnable();
SimpleRunnable p = new SimpleRunnable("Hilo de prueba");
// se crea un objeto de la clase Thread pasndolo el objeto Runnable como argumento
Thread miThread = new Thread(p);
// se arranca el objeto de la clase Thread
miThread.start();
} // fin de metodo Main
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina14/15

10Ejercicios
1)Conectarsealabasededatosysacarunalistadelosprimeros5empleados.
2)Crearunaclasequeextiendecom.solucionjava.db.ConnectDByutilizarladedesdeotraclase.
3)ProbarelejemplodeusodememoriaconysinSystem.gc().CompararelusodememoriautilizandoStringBuilder
envesdeString.
4)UtilizarlaclaseArrayListparacrearunaarreglodinamico,yordenarelarreglo.
5)LeerunarchivodeldiscodedesdeunaclaseJava
6)PasarunavariablealiniciarJavayleerladedesdeunaclase.
7)CrearunarchivoJarquecontineneunapequaaplicacinyejecutarlautilizandoelarchivoJar.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina15/15

11Esquemadelabasededatos

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

También podría gustarte