JAVA入门篇(五)之线程

本文详细解析了进程、线程及多线程的概念,阐述了它们在内存中的运行方式,以及如何在Java中实现多线程,包括通过继承Thread类和实现Runnable接口两种方式。并通过一个具体的实例,展示了如何利用线程实现页面上的球形动画。

关于进程、线程和多线程

  • 进程:一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,包含一个或多个线程。
  • 线程:进程中一个独立运行单位,不能独立于进程而存在,进程中的多个线程共享进程的内存。
  • 多线程:
    1. 在一个进程中有多个线程,同时执行(在线程之间实际上是轮换执行)。
    2.能够最大限度去使用硬件资源,达到充分利用 CPU 的目的(如:android,ios)
    3.进程中的线程数,不是越多越好,大概为1000个。(如:QQ、微信)即受内存大小等条件限制。

Java实现线程的方式

一般是两种:

  • 线程类 Thread类(也是Runnable接口的子类)
    线程的运行方法 run()
    线程的启动方法 start()
    其中,运行方法的用法为 public void run()

如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。Thread的子类应该重写该方法。

  • 线程接口 Runnable接口
    线程的运行方法 run()
    用法为 void run()

使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。方法run的常规协定是,它可能执行任何所需的操作。

接下来实例说明,运用线程使一个球在页面上移动。 先构建一个页面,通过鼠标监视器在页面上画圆
public class BallFrame{
	public static void main(String[] args){
		BallFrame bf = new BallFrame();
		bf.UN();
		
	}
	public void UN(){
		JFrame jf = new JFrame("线程动画");
		jf.setSize(600,600);
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);
		jf.setResizable(false);
		jf.setVisible(true);

		BallListener bl = new BallListener(jf);
		jf.addMouseListener(bl);

	}
	
}
再构建BallListener类继承MouseAdapter,这样就不需要把无用MouseListener的方法重写进来
public class BallListener extends MouseAdapter{
	  public JFrame jf;  
	  public Graphics g;
	 
	  public BallListener(JFrame jf){
		  this.jf =jf;
	  }
	
	  public void mouseReleased(MouseEvent e){
		  g = jf.getGraphics();
		  int x = e.getX();
		  int y = e.getY();
		  
		  Ball ball = new Ball(x, y, jf, g);
		  ball.start();
		  
	  }

}
最后利用线程令小球运动起来
public class Ball extends Thread{
	  public int x,y;
	  public JFrame jf;  
	  public Graphics g;
	  
	  public Ball(int x, int y, JFrame jf, Graphics g ){
		  this.x=x;
		  this.y=y;
		  this.jf=jf;
		  this.g=g;
	  }  
	  
	  public void run(){
				  while(x+60<jf.getWidth()&&y+60<jf.getHeight()){
					    g.drawOval(x, y, 60, 60);
						x+=20;
						try {
							Thread.sleep(100);
						} catch (InterruptedException e1) {
							e1.printStackTrace();
						}
  			     }
      }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值