版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创!

恰饭广告

实现效果:

奔溃的线程侠:(单线程)

主线程正在处理刷新图片的请求时,无法再接受其他请求,从而陷入阻塞的死循环状态。

绘制图片

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import javax.swing.JPanel;

public class CartonPerson extends JPanel implements Runnable{

Image img[]=new Image[6];

int index=0;

int speed;

public CartonPerson(int speed){

this.speed=speed;

img[0]=Toolkit.getDefaultToolkit().getImage("1.png");

img[1]=Toolkit.getDefaultToolkit().getImage("2.png");

img[2]=Toolkit.getDefaultToolkit().getImage("3.png");

img[3]=Toolkit.getDefaultToolkit().getImage("4.png");

img[4]=Toolkit.getDefaultToolkit().getImage("5.png");

img[5]=Toolkit.getDefaultToolkit().getImage("6.png");

}

public void run(){

while(true){

try{

repaint();

Thread.sleep(100);

}

catch(InterruptedException e){

e.printStackTrace();

}

}

}

@Override

public void paintComponent(Graphics g) {

// TODO Auto-generated method stub

super.paintComponent(g);

g.drawImage(img[index], 0, 0, getWidth(), getHeight(), this);

//System.out.println(index);

if(index==5){

index=0;

}

else{

index++;

}

}

}

单线程的窗体布局

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

public class SingleThreadCarton extends JFrame{

CartonPerson p1;

JButton bstart=new JButton("开始");

JButton bpause=new JButton("稍等");

JButton bresume=new JButton("继续");

SingleThreadCarton(){

init();

this.setTitle("奔溃的线程侠");

this.setSize(600, 500);

this.setResizable(true);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

}

void init(){

this.setLayout(null);

p1=new CartonPerson(0);

p1.setBounds(260, 100, 80, 160);

bstart.setBounds(260,280, 80, 30);

bpause.setBounds(260, 320, 80, 30);

bresume.setBounds(260, 360, 80, 30);

this.add(p1);

this.add(bstart);

this.add(bpause);

this.add(bresume);

ButtonClick bc=new ButtonClick();

bstart.addActionListener(bc);

bpause.addActionListener(bc);

bresume.addActionListener(bc);

}

class ButtonClick implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==bstart){

p1.run();

}

else if(e.getSource()==bpause){

}

else if(e.getSource()==bresume){

}

}

}

public static void main(String[] args){

new SingleThreadCarton();

}

}

运行结果:

点击“开始”按钮后,程序奔溃。

多线程的窗体布局

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

public class MultiThreadCarton extends JFrame{

CartonPerson p1;

Thread t1;

JButton bstart=new JButton("开始");

JButton bpause=new JButton("稍等");

JButton bresume=new JButton("继续");

MultiThreadCarton(){

init();

this.setTitle("奔跑的线程侠");

this.setSize(600, 500);

this.setResizable(true);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

}

void init(){

this.setLayout(null);

p1=new CartonPerson(0);

p1.setBounds(260, 100, 80, 160);

bstart.setBounds(260,280, 80, 30);

bpause.setBounds(260, 320, 80, 30);

bresume.setBounds(260, 360, 80, 30);

this.add(p1);

this.add(bstart);

this.add(bpause);

this.add(bresume);

ButtonClick bc=new ButtonClick();

bstart.addActionListener(bc);

bpause.addActionListener(bc);

bresume.addActionListener(bc);

t1=new Thread(p1);

}

class ButtonClick implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==bstart){

//p1.run();

t1.start();

}

else if(e.getSource()==bpause){

t1.suspend();

}

else if(e.getSource()==bresume){

t1.resume();

}

}

}

public static void main(String[] args){

new MultiThreadCarton();

}

}

运行结果:如顶图所示。

下载链接如下(包含图片)

源码下载

让我恰个饭吧.ヘ( ̄ω ̄ヘ)

支付宝 ——————- 微信

恰饭广告

java打印两个小人_Swing多线程实现奔跑的小人动画代码实现 | 彬菌相关推荐

  1. java打印两个小人_[原创]Java画小人与阶梯问题的解答

    package test; /** #Python源代码: #By:Cat73 QQ 1901803382 #2014年7月22日19:33:12 #画图函数 width:台阶的宽度(至少为4) hi ...

  2. 线程Java的两种方式_多线程(java和guava两种方式):

    1.Java 当要使用线程去执行一个任务时,可以使用ExecutorService.submit(new Callable); 这样可以不影响其他的业务的执行,但是在线程中的异常不能捕获到,也不能知道 ...

  3. java抽象和接口的理解_Java接口实现与抽象类的区别理解 | 彬菌

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 接口:接口是抽象方法的集合.接口通常以interface来声明. 接口注意事项: 1.严格来说,接口是用来实现(i ...

  4. java保留二位小数_java使double保留两位小数的多方法 java保留两位小数

    复制代码代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00& ...

  5. java同时启动多个 无法打印_java实现多线程交替打印两个数

    本文实例为大家分享了java实现多线程交替打印两个数的具体代码,供大家参考,具体内容如下 方法1.使用wait和notify package com.thread; public class T01 ...

  6. java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替

    2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z.打印顺序为12A34B56C-.5152Z.即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印 ...

  7. java如何写线程外部类_廖雪峰Java读书笔记(六)--多线程(或称并发)

    1. 多线程基础 首先要明白一些概念: 进程:把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程. 线程:某些进程内部还需要同时执行多个子任务.例 ...

  8. JAVA线程两种方法内存,JAVA线程基础回顾及内存模型(一)

    线程创建的两种方式 继承Thread类 class MyThread extends Thread{ ...... @Override public void run(){ ...... } } My ...

  9. 黑马毕向东Java课程笔记(day11):多线程(第一部分)——进程与线程+线程创建+线程安全与同步代码块+同步锁/死锁

    多线程好文:添加链接描述 锁机制:synchronized.Lock.Condition.volatile(原子性可见性)--参考添加链接描述 1.进程与线程概述   首先,对于CPU执行每一个程序, ...

  10. java多线程异步调用别的系统接口代码_抢先准备,40个 Java 多线程面试题及答案大汇总!...

    ↑↑↑点上方蓝字关注并标⭐「IT技术思维」 一起培养顶尖技术思维 来源:程序员共成长(id:finishbug) 这些多线程的问题,有些来源于各大网站.有些来源于自己的思考.可能有些问题网上有.可能有 ...

最新文章

  1. c语言的特点能够编制出复杂的功能程序,以下不是C语言的特点的是()
  2. php十天入门教程,十天学会php之第十天_PHP教程
  3. iservice list方法_MyBatis-Plus 通用IService使用详解
  4. php怎么生成卡券签名,小程序卡券签名错误的解决方案
  5. 你周围需要这6种人(文摘)
  6. 看这玩意复习你还会挂科?《软件工程2篇》
  7. Spring之 Bean的自动装配
  8. Json字符串转map集合
  9. 深度学习进行语音识别的方法 如何建立自己的语音识别系统
  10. Python实践基于直方图的梯度提升集成方法
  11. 2021年机修钳工(中级)及机修钳工(中级)复审模拟考试
  12. chrome PPAPI 开发(一)
  13. 基于python的大数据分析基础及实战pdf下载_Cloudera Hadoop大数据平台实战指南 PDF 下载...
  14. python集合的并交差操作
  15. Java获取电脑外网ip地址方法
  16. WRF/CMAQ 安装教程
  17. 希尔顿欢朋中国第200家酒店在杭州开业;玲娜贝儿在上海迪士尼全球首发亮相 | 全球旅报...
  18. 一次zookeeper启动失败的解决过程
  19. php下划虚线,怎么定义每一行的文字下面都有下划线虚线?_html/css_WEB-ITnose
  20. MAC下解压(.xip)文件

热门文章

  1. 七层网络协议详细解释
  2. OMC IT监控运维管理平台建设方案
  3. Idea打包jar 及jar包反编译为代码的多种方法
  4. abb的knx的数据库下载方法_ABB智能家居KNX方案.doc
  5. 记一次闲置电视盒子乐视C1S折腾entware
  6. 本地安全策略 、 组策略
  7. IntelliJ IDEA常用插件及其安装
  8. IDEA安装插件及安装失败的处理方法
  9. tomcat xml解析-digester
  10. 使用Python下载本地的m3u8文件