码迷,mamicode.com
首页 > 编程语言 > 详细

好记性不如烂笔头73-多线程-继承thread实现简单多线程

时间:2015-03-30 18:46:34      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:thread   runnable   多线程   好记性不如烂笔头   

通过继承class Thread或实现Runnable接口,我们都可以实现多线程。Thread中有两个最重要的函数run()和start()。
run()函数必须进行覆写,把要在多个线程中并行处理的代码放到这个函数中。
虽然run()函数实现了多个线程的并行处理,但我们不能直接调用run()函数,而是通过调用start()函数来启动多线程。
在调用start()的时候,start()函数会首先进行与多线程相关的初始化,然后start()函数会自己调用run()函数。
如果开发者自己直接调用了run()方法,那么这个将作为一个普通的串行程序进行执行,而不是基于多线程运转。


简单多线程的实现的java源代码

package com.thread;

/**
 * 一个简单的JAVA多线程
 * 
 * @author 范芳铭
 */
public class EasyThread extends Thread {
    int i = 0, j = 0,k=0;
    int flag = 0;

    public void run() {
        //让系统运行6次,为了能观察结果即可
        for(int count = 0 ; count < 6 ; count ++){
            try {
                Thread.sleep(100);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (flag == 0) {
                i++;
                System.out.println("i=" + i);
            } else if (flag == 1){
                j++;
                System.out.println("B分割点:j=" + j);
            }
            else {
                k++;
                System.out.println("C分割点:k=" + k);
            }
        }
    }

    public static void main(String[] args) {
        EasyThread thread1 = new EasyThread();
        thread1.flag = 0;
        //不要直接调用run方法,否则会当成普通的串行线程处理
        //thread1.run();
        thread1.start();

        EasyThread thread2 = new EasyThread();
        thread2.flag = 1;
        thread2.start();

        EasyThread thread3 = new EasyThread();
        thread3.flag = 2;
        thread3.start();
    }
}

运行结果
B分割点:j=1
i=1
C分割点:k=1
B分割点:j=2
C分割点:k=2
i=2
B分割点:j=3
i=3
C分割点:k=3
B分割点:j=4
C分割点:k=4
i=4
B分割点:j=5
C分割点:k=5
i=5
C分割点:k=6
B分割点:j=6
i=6

如果我们把直接调用run方法,例如下面这样处理下。
thread1.run();
//thread1.start();

运行结果
i=1
i=2
i=3
i=4
i=5
i=6
B分割点:j=1
C分割点:k=1
B分割点:j=2
C分割点:k=2
C分割点:k=3
B分割点:j=3
B分割点:j=4
C分割点:k=4
B分割点:j=5
C分割点:k=5
B分割点:j=6
C分割点:k=6

很明显,第一个i相关的线程,是作为普通的方法进行调用的,后面两个,才是以多线程的方式运作。

好记性不如烂笔头73-多线程-继承thread实现简单多线程

标签:thread   runnable   多线程   好记性不如烂笔头   

原文地址:http://blog.csdn.net/ffm83/article/details/44753781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!