`
菜刀兔兔兔
  • 浏览: 16737 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

关于线程

 
阅读更多

    

                 线程,学了挺久了。我发现我不会写总结这种东西惊讶

 

                 好吧,我又词穷了天真。不知道该怎么写了。先打开eclipse看看。先说说我对线程的理解把。

 

                我觉得线程就是好几条流水线在一起工作,能提高工作效率和空间利用率。就像一个工厂,如果只用一条流水线,那每天生产的鞋子估计少得可怜,利润应该也不怎么样,这样的工厂应该关门了。但是如果一个工厂有好多条流水线,同时生产好多鞋子,那就可以挣好多钱,可以在这个行业有很强的竞争力。程序也是一样。一个只能单条路走下去的程序只能用来当教材。多条路一起走的程序才是有效率的程序。

 

                放个简单的小球程序把,小球还不是立体的、、犹豫

 

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Graphics;

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

public class ThreadFrame extends JFrame{

	
	public static void main(String[] args) {
		ThreadFrame tf = new ThreadFrame();
		tf.init();
	}
	public void init(){
		
		//设置属性
		this.setTitle("弹球");
		this.setSize(1000,600);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(3);
	//	this.setLayout(new FlowLayout());
		
		//实例化一个按钮
		JButton jbu1 = new JButton("发射");
		this.add(jbu1,BorderLayout.NORTH);
		JPanel jpa=new JPanel();
		this.add(jpa,BorderLayout.CENTER);
		//BallListener bl = new BallListener(jpa, ball);
		//设置可见
		this.setVisible(true);
		
		Graphics g = this.getGraphics();
		
		BallThread  ball=new BallThread(jpa);
	//	ball.start();
		BallListener tl = new BallListener(jpa,ball);
		jbu1.addActionListener(tl);
		
		
	}

}

 

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.BitSet;

import javax.swing.JPanel;

public class BallListener implements ActionListener{

	private Graphics g;
	private BallThread ball;
	private JPanel jpa;
	//构造方法
	public BallListener(JPanel jpa,BallThread ball){
		this.jpa=jpa;
		this.g=jpa.getGraphics();
		this.ball=ball;
	}
	
	public void actionPerformed(ActionEvent e) {
		
		BallThread bt =new BallThread(jpa);
		bt.start();
	}
	
	
}

 

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

import javax.swing.JPanel;

public class BallThread extends Thread{
		
	//定义四个方向的常量
	public static final int UP=1;
	public static final int DOWN=2;
	public static final int LEFT=3;
	public static final int RIGHT=4;
	
	//球的半径
	private int r;
	//球的颜色
	private Color color;
	private int c1,c2,c3;
	//x和y方向的速度
	private int xSpeed;
	private int ySpeed;
	
	//运动的方向
	private int xDirection = RIGHT;
	private int yDirection = DOWN;
	//当前球的位置
	private int x,y;
	//最后球的位置
	//private int lastX,lastY;
	
	private Graphics g;
	private JPanel jpa;
	//构造方法
	public BallThread(JPanel jpa) {
		this.jpa=jpa;
		this.g=jpa.getGraphics();
		
	}
	
	public void run(){
		init();
		while(true){
			try
		{
				sleep(50);
		}
		catch(InterruptedException e){
			e.printStackTrace();
		}
			
		clear();
		move();
		draw();
			}
	}
	public void init(){
		
		Random random = new Random();
		xSpeed=2+random.nextInt(5);
		ySpeed=2+random.nextInt(5);
		r=20+random.nextInt(20);
		c1=random.nextInt(256);
		c2=random.nextInt(256);
		c3=random.nextInt(256);
		color=new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256));
		System.out.print(random.nextInt(256));
	}
	public void move(){
		
		switch(xDirection){
		
		case LEFT:
			x-=xSpeed;
			break;
		case RIGHT:
			x+=xSpeed;
		}
		switch (yDirection) {
		case UP:
			y-=ySpeed;
			break;
		case DOWN:
			y+=ySpeed;
			break;
		}
		
		if(x<=0){
			xDirection=RIGHT;
		}
		if(x+2*r>=jpa.getWidth()){
			xDirection=LEFT;
		}
		if(y<=0){
			yDirection=DOWN;
		}
		if(y+2*r>=jpa.getHeight()){
			yDirection=UP;
		}
		
	}
	
	private void draw(){
		g.setColor(color);
		g.fillOval(x, y, 2*r, 2*r);	
	}
	private void clear() {
		g.setColor(jpa.getBackground());
		g.fillOval(x, y, 2*r, 2*r);
	}
}

 

分享到:
评论

相关推荐

    Debug关于线程问题

    综上所述,"Debug关于线程问题"中遇到的白屏现象可能是由于线程同步不当,导致主线程被阻塞。通过采用正确的线程同步策略和异步处理机制,可以有效地解决这类问题,确保程序的正常运行和用户体验。对于具体的代码...

    关于线程与进程详细解说 图解 最实用 最全面

    ### 关于线程与进程详细解说 #### 一、引言 在计算机科学领域,进程与线程是两个核心概念,对于理解操作系统的工作原理至关重要。本文将深入探讨这两个概念,并通过直观的图解来帮助读者更好地理解它们之间的区别...

    关于线程和tcp的模拟读写文件

    本项目“关于线程和TCP的模拟读写文件”旨在通过多线程技术模拟读写文件的过程,为实现视频直播的后台服务打下基础。以下是关于这些主题的详细解释: 1. **线程**: - **定义**:线程是操作系统内核调度的基本单位...

    关于线程练习

    关于线程练习,可以掌握线程的相关操作。。。

    关于线程的小程序

    本文将深入探讨“关于线程的小程序”所涵盖的知识点,旨在为初学者提供一个全面的线程理解和实践基础。 一、线程的概念 线程是操作系统分配CPU时间片的基本单位,它在进程中执行,每个进程可以有多个线程。线程之间...

    关于线程的例子

    本示例将围绕“关于线程的例子”进行深入探讨,结合Eclipse3.3、MyEclipse6以及jdk1.5的软件环境,我们将学习如何在Java中创建、管理及同步线程。 首先,让我们了解线程的基本概念。线程是进程内的一个执行单元,每...

    java高清关于线程的讲解实例.rar

    Java线程是并发编程中的核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应速度...通过学习和实践提供的"java关于线程的讲解实例6666.pdf",可以深入理解这些概念,并提升在多线程环境下的编程能力。

    关于线程同步VC程序源代码

    在这个“关于线程同步VC程序源代码”的压缩包中,我们可以期待找到与关键区、内核对象、多线程以及互斥对象相关的源代码示例。 1. **关键区(Critical Section)**: 关键区是一种简单的线程同步机制,它允许一次...

    Java特别篇-关于线程创建的三种方式的总结对比

    ### Java特别篇-关于线程创建的三种方式的总结对比 #### 一、常见3种创建线程的方式 ##### (1)方式1:继承Thread类的方式 - **创建步骤**: - 创建一个类,继承`Thread`类。 - 重写`run()`方法,该方法将包含...

    java关于线程的实验代码

    在Java编程中,线程是程序执行的独立路径,它允许多个任务同时进行,极大地提高了程序的效率和响应性。本实验代码基于《Java大学教程(第三版)》中的线程相关课题,旨在帮助学习者深入理解Java线程的概念、创建与...

    关于线程(java)两天的课件

    本课程将深入探讨线程的基础知识,包括如何创建线程、理解线程的状态以及如何有效地管理线程资源,特别是通过线程池来优化性能。 首先,我们从线程的创建开始。在Java中,有两种主要的方式来创建线程:继承Thread类...

    Java/Android关于线程使用的总结

    ### Java/Android线程使用深度解析 在计算机科学领域,线程与进程是核心概念,尤其是在多任务操作系统中。本文将深入探讨Java/Android环境下的线程管理,包括线程的创建、线程池的利用及`ThreadHandler`的运用等...

    关于线程的动态停止,一个很经典的多线程麦票程序

    本示例“线程的动态停止:一个很经典的多线程麦票程序”探讨了如何在运行时控制线程的执行和停止,这对于理解和优化多线程应用程序至关重要。 1. **线程的基本概念**: - 线程是操作系统分配CPU时间的基本单位,每...

    LINUX C 关于线程的详细介绍

    【线程的概念与优势】 线程是操作系统调度的基本单位,它在同一个进程中并行执行,共享进程的资源,如内存空间、文件描述符等。线程的引入弥补了进程之间的通信成本高和资源开销大的问题。相比于进程,线程具有以下...

    java关于线程编程

    Java线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提高了程序的并发性和效率。在Java中,线程是程序执行的基本单元,一个进程可以包含多个线程。下面将详细介绍Java线程编程的一些核心概念和...

    关于线程管理 thread delphi

    在 Delphi 中,线程(Thread)是程序执行的基本单元,它允许并发处理,使得应用程序可以在同一时间执行多个任务。线程管理对于高效且响应迅速的软件开发至关重要。本篇文章将深入探讨 Delphi 中线程的创建、同步、...

    关于线程实例的简单应用

    在编程领域,线程是程序执行的一个独立路径,允许程序同时执行多个任务。在多核处理器或多处理器系统中,线程能充分利用硬件资源,提高程序的并发性和执行效率。本主题将深入探讨“线程实例的简单应用”,帮助初学者...

    C#中关于线程同步的练习

    在C#编程中,线程同步是一个至关重要的概念,特别是在多线程环境下,它用于管理和控制多个线程的执行顺序,以确保数据的一致性和完整性。线程同步可以帮助避免竞态条件、死锁等问题,提高程序的稳定性和性能。本文将...

    易语言线程返回数据的方法源码

    如果你在资源源码站找到了与这个标题相关的“content.txt”文件,可能包含的就是SanYe分享的关于线程返回数据的具体实现源码。 总的来说,易语言中的线程返回数据主要通过设置和获取线程变量来实现,同时需要注意...

Global site tag (gtag.js) - Google Analytics