Download File

Document related concepts
no text concepts found
Transcript
PROGRAMACIÓN CONCURRENTE Y
PARALELA
Asesora: Carmen Cerón Garnica
Alumnos:
Oscar Eduardo González Ramos
Michael Castañeda Trejo
Jesús Uriel Rodríguez Cuautle
Iván Hernández Pedraza
Judith Angélica Herrera Nicio
Alan Job de la Luz Hernández
INTRODUCCIÓN
La necesidad de ofrecer concurrencia en el acceso a los recursos computacionales
se remonta a los primeros sistemas operativos.
Aprovechar al máximo los recursos computacionales fue una necesidad apremiante,
sobre todo en la época en que las computadoras eran caras y escasas; el sistema
operativo tenía que ofrecer la ejecución concurrente y segura de programas de
varios usuarios, que desde distintas terminales utilizaban un solo procesador, y así
surgió la necesidad de introducir algunos conceptos de programación concurrente
para programar los sistemas operativos
El estudio de esta materia es la programación concurrente y paralela. Así que, como
parte de la concurrencia, se efectuó un ejercicio de la creación de hilos de procesos
por dos métodos: Por herencia utilizando la clase Thread y Utilizando la interfaz
Runnable.
1
DESARROLLO
Contesta las siguientes preguntas:
¿A qué se le llama procesamiento múltiple?
Multiprocesamiento o multitarea es ejecutar uno o más procesos en dos o más
procesadores dentro de una misma computadora.
Da un ejemplo cotidiano donde se realizan actividades concurrentes
Por ejemplo, un alumno estudia para un examen, codifica un programa para su
proyecto final, mantiene activo su chat en Facebook y escucha música con Spotify.
Así que un mismo individuo puede hacer múltiples actividades a la vez, en algunos
casos interrumpe momentáneamente algunas tareas para enfocarse a otras.
Codifica las tres versiones de la pelota y reboteador ¿Cuál es la diferencia
entre los tres programas de la pelota?
01Pelota
o Es un par de clases que ocupan las funciones gráficas que ocupa la función
mostrar de un método de la clase Pelota.
o Es necesario detener el proceso para cerrar la ventana.
02Pelota
o Es un par de clases que ocupan las funciones gráficas pero la clase Pelota
extends Thread y ocupa la función start de hilos.
o Al presionar iniciar salen más pelotas.
o Se puede cerrar con el icono de la ventana.
03Pelota
2
o Es un par de clases que ocupan las funciones gráficas pero la clase Pelota
extends Thread y ocupa la función start de hilos.
o Incorpora el boton detener con el método porFavorDetente();
o Al presionar iniciar salen mas pelotas
o Si se presiona detener y despues iniciar, sale una nueva pelota que borra
poco a poco a la anterior.
¿Qué método de la clase Thread se utiliza en el programa de la pelota
para poder permitir su tiempo a cada parte del programa y explica cómo
funciona?
Start(). Dentro de este método hay un ciclo for que ayuda a las posiciones
diferentes de la pelota
Recuerda que un Applet se compila y el fichero .class resultante de la compilación,
se ha de incrustar en un fichero para ser ejecutado por un navegador.
Código de la Pagina.html y lo guardas como Pagina.html donde tengas
archivo .class.
3
PRÁCTICA 3
|
PELOTA
PROGRAMA 1. APPLET
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Pelota {
private Graphics g;
private int x = 7, xCambio = 7; private int y = 0, yCambio = 2; private int diametro = 10;
private int rectIzqX = 0, rectDerX = 100;
private int rectSupY = 0, rectInfY = 100;
public Pelota(Graphics graficos)
{
g = graficos;
}
public void mostrar()
{
g.drawRect(rectIzqX, rectSupY, rectDerX - rectIzqX + 10, rectInfY - rectSupY + 10);
for (int n =1; n < 1000; n++)
{
g.setColor(Color.white); g.fillOval(x, y, diametro, diametro);
if(x + xCambio <= rectIzqX) xCambio = -xCambio;
if(x + xCambio >= rectDerX) xCambio = -xCambio;
4
if(y + yCambio <= rectSupY) yCambio = -yCambio;
if(y + yCambio >= rectInfY) yCambio = -yCambio;
x = x + xCambio; y = y + yCambio;
g.setColor(Color.red);
g.fillOval(x, y, diametro, diametro);
try
{
Thread.sleep(50);
}
catch(InterruptedException e)
{
System.err.println("Excepción de activadad de inactividad");
}
}
}
}
________________________________________________________________________________________
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Reboteador extends Applet implements ActionListener{
private Button iniciar;
public void init()
{
iniciar = new Button("Iniciar"); add(iniciar); iniciar.addActionListener(this);
}
5
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == iniciar)
{
Graphics g = getGraphics(); Pelota pelota = new Pelota(g); pelota.mostrar();
}
}
}
Figura 1
6
PROGRAMA 2. APPLET
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Pelota2 extends Thread
{
private Graphics g;
private int x = 7, xCambio = 7;
private int y = 0, yCambio = 2;
private int diametro = 10;
private int rectIzqX = 0, rectDerX = 100;
private int rectSupY = 0, rectInfY = 100;
public Pelota2(Graphics graficos)
{
g = graficos;
}
public void run()
{
g.drawRect(rectIzqX, rectSupY, rectDerX - rectIzqX + 10, rectInfY - rectSupY + 10);
for (int n =1; n < 1000; n++)
{
g.setColor(Color.white); g.fillOval(x, y, diametro, diametro);
7
if(x + xCambio <= rectIzqX) xCambio = -xCambio;
if(x + xCambio >= rectDerX)
xCambio = -xCambio;
if(y + yCambio <= rectSupY) yCambio = -yCambio;
if(y + yCambio >= rectInfY)
yCambio = -yCambio;
x = x + xCambio; y = y + yCambio;
g.setColor(Color.red);
g.fillOval(x, y, diametro, diametro);
try
{
Thread.sleep(50);
}
catch(InterruptedException e)
{
System.err.println("excepcion de inactividad");
}
}
}
}
________________________________________________________________________________________
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
8
public class Rebotador2 extends Applet implements ActionListener
{
private Button iniciar;
public void init()
{
iniciar = new Button("Iniciar");
add(iniciar); iniciar.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == iniciar)
{
Graphics g = getGraphics();
Pelota2 pelota = new Pelota2(g); pelota.start();
}
}
}
Figura 2
9
PROGRAMA 3. APPLET
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Pelota3 extends Thread
{
private boolean seguirRebotando;
private Graphics g;
private int x = 7, xCambio = 7;
private int y = 0, yCambio = 2;
private int diametro = 10;
private int rectIzqX = 0, rectDerX = 100;
private int rectSupY = 0, rectInfY = 100;
public Pelota3(Graphics graficos)
{
g = graficos; seguirRebotando = true;
}
public void porFavorDetente()
{
seguirRebotando = false;
}
public void run()
{
g.drawRect(rectIzqX, rectSupY, rectDerX - rectIzqX + 10, rectInfY - rectSupY + 10);
while(seguirRebotando)
{
g.setColor(Color.white); g.fillOval(x, y, diametro, diametro);
10
if(x + xCambio <= rectIzqX) xCambio = -xCambio;
if(x + xCambio >= rectDerX) xCambio = -xCambio;
if(y + yCambio <= rectSupY) yCambio = -yCambio;
if(y + yCambio >= rectInfY) yCambio = -yCambio;
x = x + xCambio; y = y + yCambio;
g.setColor(Color.red);
g.fillOval(x, y, diametro, diametro);
try
{
Thread.sleep(50);
}
catch(InterruptedException e)
{
System.err.println("excepcion de inactividad");
}
}
}
}
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Rebotador3 extends Applet implements ActionListener
{
private Button iniciar, detener;
private Pelota3 pelota;
11
public void init()
{
iniciar = new Button("Iniciar");
add(iniciar); iniciar.addActionListener(this);
detener = new Button("Detener");
add(detener); detener.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == iniciar)
{
Graphics g = getGraphics();
pelota = new Pelota3(g); pelota.start();
}
if(event.getSource() == detener) pelota.porFavorDetente();
}
}
Figura 3
12
PROGRAMA 4. HTML CON APPLET
<html>
<title> Pelota Concurrente </title>
<body>
<applet code="Pelota.class" width="300" height="100">
</applet>
</body>
</html>
public class Priority_Herencia extends Thread
13
CONCLUSIÓN
La creación de APPLET´s por medio de hilos es una forma mejorada de trabajar con
programas. Permite una mejor ejecución y también se individualiza su ejecutor.
14
BIBLIOGRAFÍA
http://thales.cica.es/rd/Recursos/rd99/ed99-0444-03/creaHilos.html
15