个人对于多线程这个概念还是比较陌生的,但是大体上已经感到线程应该也必须是java中的重
点,以前就对一边听歌一边浏览网页等等同时用电脑做很多事感到奇怪,现在终于明白了。现
在对线程还不是很了解,但是应该可以这样定义抢占cpu之战,谁先抢到cpu资源,谁就先运
行。线程有一个系统给的类Thread,所以可以直接继承这个类,然后重写run()方法,最后
再通过对象调用start()方法
给个实例吧:一个小球从上面落下如果掉到通过鼠标控制的一个木板上就回弹起来,但弹起的
高度减小,如此反复;直到没有动力了了,下面是代码
package com.lw20130715; import java.awt.Graphics; import javax.swing.JFrame; /** * 创建一个弹球的界面 * @author Administrator * */ public class JugleBall extends JFrame{ //创建界面的显示方法 private Graphics g; public void showUI(){ this.setTitle("弹跳的小球"); this.setSize(500,500); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(3); this.setVisible(true); g = this.getGraphics(); MouseMotion mm = new MouseMotion(g,this); this.addMouseMotionListener(mm); BallThread go = new BallThread(g,mm,this,235); // BallThread go02 = new BallThread(g,mm,this,200); go.start(); // go02.start(); } //c创建窗体的重绘的方法 public void repaint(){ super.paint(g); } }
上面是小球运动的界面
package com.lw20130715; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; public class MouseMotion implements MouseMotionListener{ private int x; private int y; private Graphics g; private JugleBall jugleBall; public MouseMotion(Graphics g, JugleBall jugleBall) { // TODO Auto-generated constructor stub this.g = g; this.jugleBall = jugleBall; } @Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub } public int getX1(){ return this.x; } public int getY1(){ return this.y; } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub x = e.getX(); y = e.getY(); this.jugleBall.repaint(); if(450>=x&&x>=50){ g.fillRect(x-50, 485, 100, 15); }else if(x<50){ g.fillRect(0, 485, 100, 15); }else if(x>=450){ g.fillRect(400, 485, 100, 15); } } }
上面的是鼠标监听器,主要是控制下面的滑竿的,以及提供鼠标坐标
package com.lw20130715; import java.awt.Graphics; import javax.swing.JFrame; /** * 创建一个弹球的界面 * @author Administrator * */ public class JugleBall extends JFrame{ //创建界面的显示方法 private Graphics g; public void showUI(){ this.setTitle("弹跳的小球"); this.setSize(500,500); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(3); this.setVisible(true); g = this.getGraphics(); MouseMotion mm = new MouseMotion(g,this); this.addMouseMotionListener(mm); BallThread go = new BallThread(g,mm,this,235); // BallThread go02 = new BallThread(g,mm,this,200); go.start(); // go02.start(); } //c创建窗体的重绘的方法 public void repaint(){ super.paint(g); } }
上面是一个线程类
最后就是主程序入口类了,代码如下
package com.lw20130715; /** * 创建程序的主入口类 * @author Administrator * */ public class Manager { public static void main(String[]args){ JugleBall ball = new JugleBall(); ball.showUI(); } }
最后附上一张程序运行的图片
相关推荐
使用方法与介绍,请参考系列文章——【深海王国】小学生都能做的语音模块?
本文将详细讲解如何初识通信,并以多线程服务器的构建为例,来阐述相关技术点。 首先,理解多线程的概念至关重要。多线程是指在一个进程中可以同时执行多个线程,这样可以充分利用CPU资源,提高程序的执行效率。在...
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗...
Java 多线程相关面试题总结 Java 多线程相关面试题是一组常见的 Java 面试题,涵盖了 Java 多线程编程的基础知识和高级概念。本文将对这些问题进行详细的解释和分析,帮助读者更好地理解 Java 多线程编程。 1. 为...
多线程由内部线程调度程序管理,线程调度器通常是CLR委派给操作系统的函数。线程调度程序确保所有活动线程都被分配到合适的执行时间,线程在等待或阻止时 (例如,在一个独占锁或用户输入) 不会消耗 CPU 时间。 在...
多线程 目录 进程 进程的了解 线程 什么是线程 线程的组成 线程的创建 线程的状态 线程的方法 线程的安全问题 1.进程 1.1.进程的了解 简单的来说进程就是运行中的程序,简称为进程。 单核CPU在任意一个时间节点上,...
9. **多线程**:了解线程的创建方式,同步机制(synchronized关键字、wait()、notify()、notifyAll()),以及线程池的使用。 10. **文件与目录操作**:学习如何在Java中创建、读取、修改和删除文件及目录。 11. **...
7. 多线程:Java原生支持多线程,允许并发执行多个任务,增强了程序的效率。 8. 动态性:Java允许程序在运行时动态加载和调用所需模块,提高了代码的灵活性。 9. 垃圾收集机制:Java中的垃圾收集器自动回收不再...
它的设计目标是具备“简单性、面向对象、健壮性、安全性、可移植性、高效性、多线程和动态性”等特性,使得Java能够适应各种应用领域,从小型嵌入式设备到大型企业级系统。 1. **简单性** Java简化了C++的一些复杂...
如今关于iOS多线程的文章层出不穷,但我觉得若想更好的领会各个实践者的文章,应该先仔细读读官方的相关文档,打好基础,定会有更好的效果。文章中有对官方文档的翻译,也有自己的理解,官方文档中代码片段的示例在...
这种设计确保了每个操作的一致性和原子性,同时也避免了多线程环境下可能产生的复杂性。 - **多个数据库支持**:虽然Redis本质上是一个键值存储系统,但它支持多达16个独立的数据库,默认情况下使用的是第0号数据库...
应用程序中可以同时执行多个功能 ==> 多线程 线程使用的是系统资源,该系统资源你是操作系统分配给当前进程使用的。 多个线程的情况下,同时【抢占执行】会导致资源紧缺。 线程抢占过程就类似于进
Maven3支持多线程并行处理模块,显著提高了构建速度,特别是在大型项目中。 2. **更好的错误报告**: 提供了更详细的错误信息和堆栈跟踪,帮助开发者更快定位问题。 3. **增强的插件管理**: 改进了插件执行的...
Java支持多线程编程,这意味着一个程序可以同时执行多个任务。通过创建Thread对象或者实现Runnable接口,开发者可以创建并发执行的代码块。 此外,Java提供了丰富的标准库,包括I/O流、网络编程、日期和时间API等。...
在初识Redis的过程中,我们通常会关注以下几个关键知识点: 1. **数据类型**:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种类型都有其独特的...
- **支持的API**:例如反射、安全、多线程等功能。 - **编译过程**:从源代码到字节码再到本地机器码的过程。 #### 六、总结 JVM是Java生态系统的核心组成部分,不仅提供了强大的跨平台能力,还不断通过技术创新...