java两种简单姿势的多线程

多线程:多件事情一起处理。

第一种: extend Therad 继承

//启动类
public class Main {
    static int count = 20;
    public static void main(String[] args) {
        ThreadA threadA = new ThreadA();//直接实例化一个线程A类    并用start()启动
        threadA.start();
        ThreadB threadB = new ThreadB();//直接实例化一个线程B类    并用start()启动
        threadB.start();
        //---------------------------------------
        //自己本身还在运行
        for(int i=0;i<5;i++){
            System.out.println("本身:"+ Main.count--);
            try {
                Thread.sleep(150);  //休眠200毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//线程A类
class ThreadA extends Thread {
    public void run() {
        //循环输出公共变量   并减一
        for(int i=0;i<5;i++){
            System.out.println("线程AAA:"+ Main.count--);
            try {
                sleep(200);  //休眠200毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//线程B类
class ThreadB extends Thread {
    public void run() {
        //循环输出公共变量   并减一
        for(int i=0;i<5;i++){
            System.out.println("线程BBBBBB:"+ Main.count--);
            try {
                sleep(100);  //休眠100毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
#输出结果
本身:20
线程BBBBBBB:18
线程AAA:19
线程BBBBBBB:17
本身:16
线程AAA:15
线程BBBBBBB:15
本身:14
线程BBBBBBB:13
线程BBBBBBB:12
线程AAA:12
本身:11
本身:10
线程AAA:9
线程AAA:8

第二种: implements Runnable 实现。因为java是单继承,所以当类已经继承过其他类时,使用第二种实现多线程的方式

public class MainA {
    static int count = 20;
    public static void main(String[] args) {
        //实例化线程AA
        ThreadAA threadAA = new ThreadAA();
        //实例化线程类  并把线程AA当做参数传入
        Thread threadA = new Thread(threadAA);
        //启动线程AA
        threadA.start();
        //----------------------------------------
        //实例化线程BB
        ThreadBB threadBB = new ThreadBB();
        //实例化线程类  并把线程B当做参数传入
        Thread threadB = new Thread(threadBB);
        //启动线程BB
        threadB.start();
       //---------------------------------------
        //自己本身还在运行
        for(int i=0;i<5;i++){
            System.out.println("本身:"+ Main.count--);
            try {
                Thread.sleep(150);  //休眠200毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//实现 Runnable
class ThreadAA implements Runnable{
    public void run() {
        for(int i=0;i<5;i++){
            System.out.println("线程AAA:"+ Main.count--);
            try {
                Thread.sleep(200);  //休眠200毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//实现 Runnable
class ThreadBB implements Runnable{
    public void run() {
        for(int i=0;i<5;i++){
            System.out.println("线程BBBBBBB:"+ Main.count--);
            try {
                Thread.sleep(100);  //休眠100毫秒    方便观察结果
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
#输出结果
本身:20
线程BBBBBBB:18
线程AAA:19
线程BBBBBBB:17
本身:16
线程AAA:15
线程BBBBBBB:15
本身:14
线程BBBBBBB:13
线程BBBBBBB:12
线程AAA:12
本身:11
本身:10
线程AAA:9
线程AAA:8
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,917评论 18 399
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,065评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,188评论 1 15
  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 12,067评论 3 87
  • 昨天早上特意请了假去上产后修复课。上完课感叹,幸好有那么坚定的信念要去上课。要不真的错过太多。 原本我只是想知道怎...
    蕙兰花开的季节阅读 952评论 0 0