个人对于多线程这个概念还是比较陌生的,但是大体上已经感到线程应该也必须是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(); } }
最后附上一张程序运行的图片
相关推荐
前言一、什么是多线程一、初识多线程1.1介绍进程1.2回到线程1.3进程与线程1.4并行与并发1.5Java实现多线程1.5.1继承Thread,重写run方法
1.初识多线程 1.1介绍进程 1.2回到线程 1.3进程与线程 1.4并行与并发 1.5Java实现多线程 1.5.1继承Thread,重写run方法 1.5.2实现Runnable接口,重写run方法 1.6Java实现多线程需要注意的细节 二、Thread类...
NULL 博文链接:https://coco-young.iteye.com/blog/1150719
一、初识TThread对象VCL提供了用于多线程编程的TThread类,在这个类中封装了Windows关于线程机制的Windows API,通常将它的实例成为线
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗...
多线程由内部线程调度程序管理,线程调度器通常是CLR委派给操作系统的函数。线程调度程序确保所有活动线程都被分配到合适的执行时间,线程在等待或阻止时 (例如,在一个独占锁或用户输入) 不会消耗 CPU 时间。 在...
多线程 目录 进程 进程的了解 线程 什么是线程 线程的组成 线程的创建 线程的状态 线程的方法 线程的安全问题 1.进程 1.1.进程的了解 简单的来说进程就是运行中的程序,简称为进程。 单核CPU在任意一个时间节点上,...
该程序采用多线程技术进行排序,开发语言delphi,可初识多线程
如今关于iOS多线程的文章层出不穷,但我觉得若想更好的领会各个实践者的文章,应该先仔细读读官方的相关文档,打好基础,定会有更好的效果。文章中有对官方文档的翻译,也有自己的理解,官方文档中代码片段的示例在...
应用程序中可以同时执行多个功能 ==> 多线程 线程使用的是系统资源,该系统资源你是操作系统分配给当前进程使用的。 多个线程的情况下,同时【抢占执行】会导致资源紧缺。 线程抢占过程就类似于进
全书共分为12章,从HTML5的历史故事讲起,涉及了文档结构和语义、智能表单、视频与音频、画布、SVG与MathML、地理定位、Web存储与离线Web应用程序、WebSockets套接字、Web Worker多线程、微数据以及以拖曳为代表的...
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS...
是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。 ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。是极具前景的并且是人们更加需要的“传统”BSD套接字之上的一层封装。ZMQ...
2.1.2用户的注册与注销11 2.1.3账户的管理12 2.1.4用户口令的管理12 2.1.5用户组信息13 2.2初识UNIX的shell13 .2.2.1什么是shell程序13 2.2.2shell的内部命令和外部命令14 2.3UNIX系统启动及用户登录过程14 2.3.1...
并行运算,并发运算1.10 Linux和Windows对于并发采取的不同机制第2章认识Java里面的线程2.1先来看一下线程的简单实现三种方法2.2线程里面的属性...异常的处理第3章线程安全3.1初识Java内存模型与多线程3.2什么是不安全...
Java学习笔记 初识Java编程、Java基本数据类型、运算符、流程控制、数组、方法、面相对象、Java常用类库、集合、异常处理、多线程、IO流、网络编程、Java的反射机制、泛型、枚举、注解、配置文件操作、发送邮件、...
上机实践8 多线程 47 实验1 线程的4种状态 47 实验2 线程之间共享数据 49 实验3 挂起、恢复和终止线程 51 上机实践9 输入输出流 55 实验1 文件加密 55 实验2 给文件的内容添加行号 56 实验3 使用RANDOMACESSFILE类...