~这些年,我们一起学过的java~08~线程之Thread的基本运用~

        今天刚刚学习线程,昨天晚上我们小组的小伙伴特别欢快地讨论要做什么线程游戏,大家聊得很欢脱呀,在犹豫做植物大战僵尸那种还是什么愤怒的小鸟啊或者我特别喜欢玩的节奏大师,各种讨论,小文子迷上了那个叫什么皇家守卫军,小李子喜欢玩那个森林冰火,总之各种纠结呀,不过我觉得还是先走一步看一步吧,到时候等我们学了线程的初步运用,说不定就会知道自己想做什么 了……

        不过今天下午强哥给我们上线程的时候,我特别的犯困,昨晚竟然湿着头发就睡着了,起来的时候就赶脚各种头晕,然后下午一上课眼皮就耷拉了下来,之后听的课赶脚就有点糊涂 ,今晚还是咬咬牙写一写,虽然不知道写出来的是对还是错,先附上来,到时候发现了问题就马上编辑修改,也希望各位大神能不吝赐教……

        说到线程的功能,就离不开进程这个概念,我们从任务管理器中可以看到很多进程,但是线程明显更多,有时候一个进程里面有多个线程,线程的最大好处就是可以同时进行多个工作但是不受干扰,这样可以大大提高运行效率,我今天写了一个很挫小球运动的程序,代码如下:

import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Mymoving extends JFrame{
	private JButton jb;
	Graphics g;

	public static void main(String[] args) {
		Mymoving my=new Mymoving();
		my.init();
	}
	public void init(){
		this.setBounds(350, 90, 600, 550);
		this.setTitle("球球");
		this.setLayout(null);
		this.setDefaultCloseOperation(3);
		
		jb=new JButton("动起来");
		jb.setBounds(230, 10, 100, 30);
		this.add(jb);
		jb.addActionListener(al);
		this.setVisible(true);
	}
	//匿名内部类
	ActionListener al=new ActionListener(){
		private MyThread d;
		public void actionPerformed(ActionEvent e){
			d=new MyThread(Mymoving.this);
			d.start();
		}
	};
	
	
}

       上面的内部类意思是在一个类里面调用一个接口,按理说应该要另外写一个类来实现接口,但是,这里并没有类名,而是直接调用,在后面的大括号里继续写,省略了传参的过程,简化了代码……

       接下来就是定义一个类来继承Thread父类的方法属性

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JButton;

public class MyThread extends Thread{
	Mymoving my;
	private JButton jb;
	Graphics g;
	int x=10,y=0;//这个是球或图片的出发点位置,可以随意设置
	public MyThread(Mymoving my) {
//		super();
		this.my = my;//这里把前面写的那个类的方法属性给传进来
	}
	public void run(){
		
		g=my.getGraphics();
		while(true){//加一个死循环,让球动起来,不然就会停在原地
		g.setColor(my.getBackground());
		g.fillOval(x, y, 50, 50);
		
		x++;
		y++;//这个是控制球的方向
		g.setColor(Color.blue);
		g.fillOval(x, y, 50, 50);
		
		try {
			Thread.sleep(1);//利用这个休眠方法可以设置限时功能,还可以控制球的速度
		} catch (InterruptedException e) {
			e.printStackTrace();//try catch来捕捉异常情况……
		}
		if(y>500){//这里就是只是想让他原路返回,数字可以任意定,如果定的合适,可以有那种反弹的效果
			while(true){
			g.setColor(my.getBackground());
			g.fillOval(x, y, 50, 50);
			
			x--;
			y--;
			g.setColor(Color.blue);
			g.fillOval(x, y, 50, 50);
			
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			}
		}
		}	
	}
}


     虽然现在只能实现很简单一个物体移动(上下左右斜都可以),但是,相信之后的课程上完之后,我们小组的小伙伴们能更加熟练地运用线程,做出更炫更好玩的游戏!干巴爹!!!

 


 

       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值