Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
Página 1
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
1 Introducción
!
" # $ %&" #' ! ( )* + *
(
, !
!
, -
!
./+0. ! !
, ( " $
- ( !
- (
$ ! ! &1 ' !
! 2
- ( 344 (
- 5 344
5
6 ! 344 !
7 7
! 2
- 7
!
!
Página 2
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
- + 7
8 7 ( !
!
. ( !
)
3 !
)
);;$$$ ;
3 !
)
);
; ;< ;= >?; $
6 7 & ' 3 &
@ ='
3 ! )
, 7
( (
, 5 & '
Página 3
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
, !
( )
(
, 5!
( !
! 7 5!
7
, (
- 5
!
& ' ! 7
, 7
(
7
- 5
! ! ! !
8
( $ %
- 5 ,
! " #$ -
5
, (
7 5" $
- 5 !
!
, " #$
!
) (
! ! +A +A !
7 & +A = >?'
8 5" %
7 !
7 5
- 5 !
3 . ! 5
+A
Página 4
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
6 7! 7 3 !
- 7 (
- 7 !
, 2
(
! 7
- + + 8
- 0 0
+ ! & ' ! (
( B'
-
)
class nombre_fichero{
public static void main (String [] args){
conjunto de instrucciones;
}
}
8 )
= 3 5( 5
< -
C - " 5
Página 5
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
D @ 7 7
5
E (
3 Sintaxis de Java
6 !
! ! 7 -
2 5 !
! .
2 ! !
- 8
)
class ejemploholamundo{
public static void main (String [] args){
String frase=”Hola Mundo”;
System.out.println(frase);
}
}
- ! )& ' *
$ 7 2
# ! =? )
class ejemploholamundo{
public static void main (String [] args){
String frase="Hola Mundo";
int i;
for (i=0; i<10; i++)
System.out.println(frase);
}
}
. ! !
#
+ ! 2
! 8 )
Página 6
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
class ejemploholamundo{
private int i;
public static void main (String [] args){
String frase="Hola Mundo";
for (i=0; i<10; i++)
System.out.println(frase);
}
}
. )
- ! ! (
FG 2 H, ), 2
6 2 ! ! ! (
5 ! 0
-
!
!
8 ! ! )
Clase CA
A
Atributo A
Atributo estático B
Método Op1{
A=1;
B=1;
}
Método Op1{
A=1;
B=1; Objeto O1
}
Método Estático Op2{
B=3; Compartido A
}
Método Op1{
A=1;
B=1;
B }
, "+ 2 , (
& ' ! I
2 , ( "+ . 5
"+ 2 2 !
2 , 8 ! 2
! ! , 5
2 2
8 !
)
• . ! - , ,./
• . ! - , ,./J - -./J , -./J - ,./J
, ,./
Página 7
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
8 ! )& ' *
)
class ejemploholamundo{
private static int i;
public static void main (String [] args){
String frase="Hola Mundo";
for (i=0; i<10; i++)
System.out.println(frase);
}
}
0 2 ! 8 2
6
7
# 2 5 # 5
5 ! ( 2
7
2 -
!
!
. 5 !
!
!
. 7
!
, )
private sin modificador protected public
Misma clase SI SI SI SI
Misma subclase de paquete NO SI SI SI
Misma no-subclase de paquete NO SI SI SI
Subclase de diferente paquete NO NO SI SI
No-subclase de diferente paquete NO NO NO SI
Página 8
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
• 3 )
nombreclase(tipo arg1, tipo arg2, … , tipo argN){…}
• 2 ! )
[modificador] tipo nombre (tipo arg1, tipo arg2, … , tipo argN){…}
• 2 ! )
[modificador] tipo nombre (tipo arg1, tipo arg2, … , tipo argN){…}
• 2 ! )
[modificador] void nombre (){…}
• 2 ! )
[modificador] void nombre (){…}
• 3
8 (
8 )
tipo [][] nombre;
. 7!
7
. 7 7
2 )
nombre = new tipo[dimension];
nombre = new tipo[dimension1][dimension2]; 7
class matriz{
// Atributos
private int resultado;
private int [][] m;
// Métodos
matriz (){ // Inicialización de la matriz
m = new int[3][3];
m[0][0]=2; m[0][1]=10; m[0][2]=1;
m[1][0]=1; m[1][1]=2; m[1][2]=0;
m[2][0]=0; m[2][1]=2; m[2][2]=-1;
}
Página 9
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
System.out.print(" ");
}
System.out.println("");
}
public int sumarfila (int fila){ // Suma de los elementos de una fila
int i;
int ac;
ac=0;
for (i=0; i<3; i++) ac=ac+m[fila][i];
return ac;
}
public void sumatotal (){ // Suma de todos los elementos de la matriz
int r1, r2, r3;
r1=sumarfila(0);
r2=sumarfila(1);
r3=sumarfila(2);
resultado=r1+r2+r3;
}
public void versuma(){ // Visualización de la suma
System.out.print("La suma es: ");
System.out.println(resultado);
}
public void visualizar (){
int i;
for (i=0; i<3; i++)
visualizarfila(i);
}
}
}
}
, )
Página 10
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
4 Hilos en Java
3 !
2 !
, !
(
, (
%
-
-
8 ! ! !
! ! !
! ! 5 -
! !
5 7
!
- (
& ' 2)
Página 11
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
PROCESOS
Código
// /// // // /// //
/// /// / /// /// /
// // / / // // / /
//// // //// //
Programa 1 Programa 2
8 C1 C2 ( Thread O1 O2
C1 O3 O4 C2 3 )
O1.start();
O2.start();
O3.start();
O4.start();
, 2 run() C1 O1 O2
2 run() C2 O3 O4
1 )
Página 12
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
}
class hilo2 extends Thread{
public void run(){
System.out.println("Soy el hilo 2");
}
}
class interfazhilo3 implements Runnable{
public void run(){
System.out.println("Soy el hilo 3");
}
}
class ejemplo1{
public static void main (String [] args){
h1.start();
h2.start();
h3.start();
}
}
. ! 7C
3 & '
- C Thread
! 7Runnable
Thread I 7 7
Runnable
-
! 2 run
}
}
class ejemplo2{
public static void main (String [] args){
hilo h1=new hilo();
hilo h2=new hilo();
h1.set_numero(1);
h2.set_numero(2);
h1.set_veces(10);
h2.set_veces(10);
h1.start();
h2.start();
}
}
Página 13
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
-
7)
class fila extends Thread{
private int [] f;
private int resultado;
fila(int [] f){
this.f=f;
}
public void run(){
resultado=0;
for (int i=0; i<3; i++)
resultado=resultado+f[i];
System.out.print("Resultado parcial");
System.out.println(resultado);
}
public int get_resultado(){
return resultado;
}
}
class matriz {
private int resultado;
private int [][] m;
private fila [] hilos_para_sumar;
matriz (){
// Reserva de espacio para la matriz
m = new int[3][3];
m[0][0]=2; m[0][1]=10; m[0][2]=1;
m[1][0]=1; m[1][1]=2; m[1][2]=0;
m[2][0]=0; m[2][1]=2; m[2][2]=-1;
Página 14
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
class hilos{
public static void main (String [] args){
matriz ma = new matriz();
ma.sumatotal();
ma.visualizar();
ma.versuma();
}
}
- )
3 matriz
ma , 0 1 2 #
.1 /" 3 1 #
4 # 5 # $
6 % 1 1 $
4 + 1 2 3 6 4 3
03 3 3 $
Basura ma 100 ma
Referencia
en memoria
100
Tras la llamada
al metodo new
Instancia
de la
clase
matriz en
zona
dinámica
3 sumatotal C ! 7
, C !
M
for (i=0; i<3; i++)
hilos_para_sumar[i].start();
M
Hilo principal
Primera instrucción
del for
Hilo 1
Segunda instrucción
del for
Hilo 2
Tercera instrucción
del for
Hilo 3
Punto donde
concurren 4 hilos
join
Página 15
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
6 7! 7 sumatotal
7 3 2
visualizar !
! ! 2 ! (
( +
8 . !
! )
• E
• 1 7
8 )
• !
• 5 !
• 5 ! !
, 2 )
• 3 5
5 !
• 7 5
• 1 7 7
• 2 run Thread - !
run + % %
h1.start();
h2.start();
}
}
Página 16
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
3 2 main -
5 = 5 <
- 7 h1 h2 !
, ! = <
2 . !
! (
-
8 ##
!
2 ! ! 2
!
+ % !
);;
$$$ ( ; ;-" +;
!
5 8
7 + %% !
( <
( < !
Página 17
Autora texto: Nieves Pavón Pulido Programación Concurrente (Manual de Java)
Profesores asignatura: Álvarez J.L., Márquez F.A., Pavón N., Rodríguez M.A.
http://www.uhu.es/17217-18216/ (Universidad de Huelva)
else turno.set_turno(1);
}
}
class ejemploexclusionmutua11{
public static void main (String [] args){
int [] v = new int [10];
turno.set_turno(1);
h1.start();
h2.start();
}
}
3 ! (
!
! !
! 6
Página 18