多线程

一. 通过继承Thread类实现多线程

Thread类存放于java.lang类库里。java.lang包中提供常用的类,接口,一般异常,系统异常等编程语言核心内容,如基本数据类型,基本数学函数,字符串处理,线程,异常处理类等,系统默认加载这个包,所以我们可以直接使用Thread类。在Thread类中定义了run()方法,要想实现多线程,必须覆写Thread类的run方法。也就是说要使一个类可激活线程,必须按照下面的语法来编写。

class 类名称 extends Thread //从Thread类扩展出子类
{
属性...
方法...
修饰符run() //覆写Thread类里的run方法
{
程序代码; //激活的线程将从run方法开始执行
}
}

案例1:

import Dao.Test;

/**
 * Created by pc on 2017/7/8.
 */
public class ThreadDemo {
    public static void main(String args[]){
        new TestThread().start();
        for(int i=0;i<5;++i){
            System.out.println("main线程在运行");
            try {
                Thread.sleep(1000);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

/**
 * Created by pc on 2017/7/8.
 */
public class TestThread extends Thread {
    public void run(){
        for (int i=0;i<5;++i){
            System.out.println("TestThread在运行");
            try{
            Thread.sleep(1000);
            }catch (Exception e){
                throw new RuntimeException(e);
            }
        }
    }
}

运行结果:

多线程_第1张图片
案例1运行结果
二. 通过Runnable接口实现多线程

在Java中不允许多继承,即一个子类只有有一个父类,因此如过一个类已经继承了其他类,那么这个类就不能在继承Thread类。此时,,如果一个其他类的子类又想采用多线程技术,那么这时就要用到Runnable接口,来创建线程。接口可以实现多继承。
通过实现Runnable接口实现多线程的语法如下:

class 类名称 implements Runnable //实现Runnable
{
属性...
方法...
public void run() //实现Runnable接口里的run方法
{ //激活的线程将从run方法开始运行
程序代码...
}
}

案例2:

/**
 * Created by pc on 2017/7/8.
 */
public class RunnableThread {
    public static void main(String args[]){
        TestThread1 t=new TestThread1();
        new Thread(t).start();
        for(int i=0;i<5;i++){
            System.out.println("main线程正在运行");
            try{
                Thread.sleep(1000);
            }catch (Exception e){
                throw new RuntimeException(e);
            }
        }
    }
}

/**
 * Created by pc on 2017/7/8.
 */
public class TestThread1 implements Runnable {

    public void run() {
    for (int i=0;i<5;i++){
        System.out.println("TestThread在运行");
        try{
            Thread.sleep(1000);
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }
    }
}

运行结果:

多线程_第2张图片
案例2运行结果

你可能感兴趣的:(多线程)