美文网首页
Java多线程Thread类的使用

Java多线程Thread类的使用

作者: 瓦西大人 | 来源:发表于2017-06-18 20:18 被阅读0次

前言:
多线程机制是JAVA语言又一重要特征,使用多线程技术可以使系统同时运行多个执行体,提高计算机资源的利用率和整个应用系统的性能。今天主要练习的是多线程机制、Thread类、以及线程的应用机制。

一问一答:
Q:为什么要用多线程?
A"通常,把操作系统的多个任务称为进程(Process),而程序中的多任务则称为线程。每个进程都拥有一组完整的属于自己的变量,而线程则共享这些数据。线程的优势在于创建和注销线程的开销比运行新的进程少得多,所以现在主流的操作系统都支持多线程。而且,和进程间的通信相比,线程间的通信要快得多,也方便得多。

创建线程:
创建线程第一种方法是继承线程类java.lang.Thread。相关的方法有:
1、run():该方法用于线程的执行。在线程启动后会调用该方法。你需要重载该方法,以便让线程做特定的工作。
2、start():该方法使得线程启动run()方法。

例:通过多线程实现球移动的动画:点击"Start"按钮,则从左上角生成一个球在界面移动并反弹;点击"Close"按钮则退出程序。

效果图1.png 代码如下:
import java.awt.;
import java.lang.
;
import java.awt.event.;
import javax.swing.
;
import java.util.*;
public class BallGame extends JFrame implements ActionListener
{
JButton jbtStart = new JButton("Start");
JButton jbtStop = new JButton("Stop");
MainPanel mp = new MainPanel();

public BallGame()
{

    this.getContentPane().add(mp,BorderLayout.CENTER);  
    mp.setBackground(Color.white);
    JPanel p=new JPanel();
    p.add(jbtStart);
    p.add(jbtStop);
    this.getContentPane().add(p,BorderLayout.SOUTH);  
    jbtStart.addActionListener(this);  //监听事件
    jbtStop.addActionListener(this);
}

public static void main(String[] args)
{

    BallGame bt = new BallGame();
    bt.setSize(300,300);
    bt.setVisible(true);
    bt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)
{

    if(e.getSource()==jbtStart)
    {
        BallThread b=new BallThread(mp); 
        mp.balls.addElement(b);
        b.start();  
    }
    else
    {
        System.exit(0);
    }
}

}
class MainPanel extends Panel
{
public Vector balls=new Vector();
public void paint(Graphics g)
{
for(int i=0;i<balls.size();i++)
{
BallThread ball = (BallThread)balls.elementAt(i);
ball.draw();
}
}
}
class BallThread extends Thread
{

MainPanel mainPanel;
private static final int XSIZE=20;
private static final int YSIZE=20;
private int x=0;
private int y=0;
private int dx=2;
private int dy=2;

public BallThread(MainPanel b)
{ 
    mainPanel=b;
}
public void draw()
{
   Graphics g=mainPanel.getGraphics();
   g.fillOval(x,y,XSIZE,YSIZE);  
   g.dispose();
}
public void move()
{
   x+=dx; 
   y+=dy;
   Dimension d=mainPanel.getSize();
   if(x<0){x=0;dx=-dx;}  
   if(y<0){y=0;dy=-dy;}
   if(x+XSIZE>=d.width ) {x=d.width -XSIZE;dx=-dx;} 
   if(y+YSIZE>=d.height ) {y=d.height -YSIZE;dy=-dy;}
   mainPanel.repaint();
}
public void run() 
{
   try
   {
      draw();
      while(true)
      {
          move();  
          sleep(30); 
      }
   }catch(Exception e){   }
}

}

关于多线程的练习题及源码下载地址:http://pan.baidu.com/s/1bo60JGb 密码: 3mma

相关文章

  • 多线程

    Java多线程----Thread java使用Thread类代表线程,所有的线程对象必须是Thread类或者其子...

  • Java多线程的使用通信和控制

    Java多线程的使用通信和控制 1. Java多线程的使用和通信 实现多线程有两种方式 1. 继承Thread父类...

  • java线程&和各种奇奇怪怪的锁

    1、Java线程 一、Java多线程常用的两种实现方法 1、 继承Thread类 子类继承Thread类具备多线程...

  • java多线程

    1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用E...

  • 002--volatile 关键字-内存可见性

    话题一:多线程的3种创建方式 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实...

  • 多线程

    一. 通过继承Thread类实现多线程 Thread类存放于java.lang类库里。java.lang包中提供常...

  • 2020-10-25 Java线程

    Thread类java中一个类可以通过继承Thread类实现run()实现多线程。继承thread的类通过star...

  • Java多线程

    Java中创建多线程有两种方式:继承Thread类和实现Runnable接口。 继承Thread类 Java的Th...

  • java多线程编程笔记

    继承Thread类,实现多线程 java里面提供了一个java.lang.Thread的程序类,那么一个类只要继承...

  • (二)Thread类

    Java多线程目录 介绍 从上文中我们知道开启一个线程需要使用Thread类,自我理解Thread类是一个线程的控...

网友评论

      本文标题:Java多线程Thread类的使用

      本文链接:https://www.haomeiwen.com/subject/vpkwqxtx.html