JAVA之多线程(一)

众所周知,一个人在思考学习的同时他的呼吸,身体的各机能都在正常运行,也就是在同一时间内干许多的事,这在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()方法中主要是改变了图标的横坐标位置从而实现滚动。

展开阅读全文

没有更多推荐了,返回首页