zoukankan      html  css  js  c++  java
  • Java 多线程编程 小试牛刀

    Java 多线程编程 小试牛刀
    2009年4月10日   天气:晴
     
    Java多线程编程。
    实现多线程的类要实现Runnable接口的void run()方法,或继承Thread类重写其中的run()方法。
    驱动方法中先实例化一个类(实现接口或继承,重写run()方法的类),然后新建线程,将对象传进去。
    然后start()。即可。
     
    实例:Java演示选择排序。
    Sorting类
    package p9_6;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
    public class Sorting implements Runnable
    {
        Comparable[] list;
        JPanel panel;
        public Sorting(Comparable[] eList, JPanel ePanel)
        {
            list=eList;
            panel=ePanel;
        }
     public void run()     //实现
     {
      int min;
      Comparable temp;
      
      for( int index=0; index<list.length-1; index++ )
      {
       min=index;
       for(int scan=index+1; scan<list.length; scan++)
        if(list[scan].compareTo(list[min])<0)
         min=scan;
       temp=list[min];
       list[min]=list[index];
       list[index]=temp;
                try
                {
                    Thread.sleep(1000);
                }
                catch (InterruptedException ex)
                {
                    Logger.getLogger(Sorting.class.getName()).log(Level.SEVERE, null, ex);
                }
            
                panel.repaint();
            }
     }
    }
     
    SortPanel类,JPanel的继承
    package p9_6;
    import javax.swing.*;
    import java.awt.*;
    import java.lang.Thread;

    public class SortPanel extends JPanel{
        final int BOTTOM=400;
        final int LEFT=20;
        final int WIDTH=20;
        private int count;
        private Integer[] arr;
        public SortPanel(int eCount, Integer[] eArr)
        {
            count=eCount;
            arr=new Integer[count];
            for(int i=0; i<count; i++)
                arr[i]=eArr[i];
            Sorting sts=new Sorting(arr, this);
            Thread thd=new Thread(sts);
            thd.start();

        }
        public void paint(Graphics g)
        {
            super.paint(g);
            Color[] cl={Color.RED, Color.GREEN, Color.CYAN, Color.MAGENTA, Color.BLACK, Color.BLUE, Color.ORANGE, Color.PINK};
            int left=LEFT;
            int top;
            for( int i=0; i<count; i++)
            {
                g.setColor(cl[i]);
                top=25*arr[i];
                g.fillRect(left, BOTTOM-top, WIDTH, top);
                g.setColor(Color.BLACK);
                g.drawString(Integer.toString(i), left+WIDTH/4, BOTTOM+15);
                left+=2*WIDTH;
            }
        }
    }
    驱动类Main
    package p9_6;
    import javax.swing.*;
    import java.awt.*;

    public class Main {
       
        public static void main(String[] args) {
            JFrame frame=new JFrame();
            Integer[] arr={10, 3, 14, 1, 5, 2, 6, 12};
            SortPanel panel=new SortPanel(8, arr);
            frame.getContentPane().add(panel);
            frame.setPreferredSize(new Dimension(500, 600));
            frame.pack();
            frame.setVisible(true);
        }
    }
  • 相关阅读:
    web页面常用方法及INI文件的读取方法
    winform 三个Panel左右切换(panel里面填充图片)
    图片渐出轮播的效果
    Winform跑马灯——Graphics运用
    .net 3.5 新功能重写ToInt()方法
    style.display
    SQL: 分页SQL SQL2005函数分页!
    JS: 验证输入必须为数字
    Table 里面点标题会进行排序
    在Div中绑定数据
  • 原文地址:https://www.cnblogs.com/daxia319/p/1452667.html
Copyright © 2011-2022 走看看