JAVA之多线程(一)

来源:互联网 发布:西北大学网络教育 编辑:程序博客网 时间:2024/06/01 12:23

众所周知,一个人在思考学习的同时他的呼吸,身体的各机能都在正常运行,也就是在同一时间内干许多的事,这在JAVA中就被称为并发,而这其中的每一件事也被成为线程。
每一个线程完成一个功能切与其他线程并发执行,即被称为多线程。一个进程是包含有自身地址的程序,每个独立的程序都被称为进程。
在我们编程中,若需要一个进程同时完成多段代码的操作,就需要产生多线程。
下面就说一下JAVA中主要提供的实现JAVA中的两种方式


一.继承Thread类
下面上个栗子

public class ThreadTest extends Thread{    private int count = 10;    public void run(){        while(true){            System.out.println(count+"");            if(--count == 0){                return;            }        }    }public static void main(String[] args){        new ThreadTest().start();    }}

运行出来的效果是:
这里写图片描述
在public void run(){}中写出你想要执行的任务
再通过主方法调用start()来启动执行任务。


二.实现Runnable接口
若需要继承其他类(并非Thread类)的同时还要使得当前类实现多线程,即可使用Runnable接口来实现。因为JAVA语言不支持多继承。
上栗子:

public class SwingYThread extends JFrame {    /**     * @param args     */        private JLabel j = new JLabel();        private static Thread t;        private int count = 0;        private Container container = getContentPane();        public SwingYThread(){            setBounds(300, 200, 250, 100);            container.setLayout(null);            URL url = SwingYThread.class.getResource("/java001.png");            Icon icon = new ImageIcon(url);            j.setIcon(icon);            j.setHorizontalAlignment(SwingConstants.LEFT);            j.setBounds(10, 10, 200, 50);            j.setOpaque(true);            t = new Thread(new Runnable(){                public void run(){                    while(count <= 200){                        j.setBounds(count, 10, 200, 50);                        try{                            Thread.sleep(1000);                        }catch(Exception e){                            e.printStackTrace();                        }                        count += 10;                        if(count == 200){                            count = 10;                        }                    }                }            });            t.start();            container.add(j);            setVisible(true);            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);            }    public static void main(String[] args) {        // TODO Auto-generated method stub        new SwingYThread();    }}

效果图:
这里写图片描述
此栗子先在类的构造方法中创建Thread实例,同时以Runnable对象作为Thread类构造方法的参数,然后用内部类实现run()方法。run()方法中主要是改变了图标的横坐标位置从而实现滚动。