初窥多线程-简单多线程测试

什么是程序?

很多书上写的是程序=算法+代码;它是固有的一个东西,你不去运行它,那么它就不能发挥它的作用。它以某些程序设计语言编写,运行于某种目标结构体系上。它就像一篇文章,可以让能读懂他的程序员读懂,他也是能让计算机读懂的指令,能够让计算机明白我们要让它干嘛。

什么是进程?

程序点开后,它将执行一系列的指令,达到一些功能的实现,而在程序运行的过程也就是进程。

什么是线程?

我们的单线程程序,就像是接力比赛一样,我们必须等前一个选手将接力棒送到手里,才可以开始下一步行动,单线程程序跟这非常相似,它必须一行一行代码的执行,下一行代码必须等上一行代码执行完毕才能执行,这就造成了很多不方便的地方,因此,绝大多数的程序不会使用单线程来完成,那样执行效率很低,而且很多功能不能实现,因此需要多条线程来分别完成各项功能。多项线程就像我们要将一车货物搬下车一样,可以多个人同时下货,互不干扰,同时进行。

什么是并发线程?

在一段时间内同时开启的线程

并行线程?

同时相同时间同时在运行着的线程。

简单线程测试

效果图
在这里插入图片描述
(有一点闪烁问题,所以会有残影)
代码实现
窗体代码:

public class MyGameUI1 extends JFrame {
	public static void main(String[] args) {
		 MyGameUI1 window=new  MyGameUI1();
		 window.ShowUI();
	}
	public void ShowUI() {
		this.setTitle("小球发射器");
		this.setSize(1200,800);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setLayout(null);
		this.getContentPane().setBackground(Color.WHITE); 
		JButton btn = new  JButton();
		btn.setText("开始");
		btn.setLocation(550, 0);
		btn.setSize(100, 40);
		MyGameListen1 m=new MyGameListen1(); 
		btn.addActionListener(m);
		this.addKeyListener(m);
		this.add(btn);
		m.g =this.getGraphics();
	}
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		g.drawLine(200, 160, 1000, 160);
		g.drawLine(200, 160, 200, 720);
		g.drawLine(200, 720, 1000, 720);
		g.drawLine(1000, 720, 1000, 160);
		
	}
}

监听器

public class MyGameListen1 extends MouseListen{
	Graphics g=null;
	@Override
	public void actionPerformed(ActionEvent e) {
		DirectionUp s=new DirectionUp(g);
		DirectionUp2 s2=new DirectionUp2(g);
		DirectionUp3 s3=new DirectionUp3(g);
		DirectionUp4 s4=new DirectionUp4(g);
		// TODO Auto-generated method stub
			s.start();
			s2.start();
			s3.start();
			s4.start();
	}
}

线程代码(只放一条的了嗷)

public class DirectionUp extends Thread{
	private Graphics g;
	public DirectionUp(Graphics g) {
		this.g = g;
	}
	int x=600;
	int y=440;
	public void run() {
		Sports(x,y);
	}
	public void Sports(int x,int y) {
		int x1=x;
		int y1=y;
		Random ran = new Random();
		int s=ran.nextInt(10);
		int s2=ran.nextInt(10);
		if(s==0) {
			return;
		}
		for(int i=0;i<140;i++) {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}
			g.setColor(Color.white );
			g.fillOval(x1-20-(i-1)*s2,y1-20-(i-1)*s,40 , 40);
			g.setColor(Color.blue );
			g.fillOval(x1-20-i*s2, y1-20-i*s, 40, 40);
			if(x1-20-i*s2<=200||x1-20-i*s2>=1000||y1-20-i*s<=160||y1-20-i*s>=720) {
				g.setColor(Color.white );
				g.fillOval(x1-20-i*s2,y1-20-i*s,40 , 40);
				return;
			}
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值