继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

线程的实现,以及相关概念的总结

摄氏du江
关注TA
已关注
手记 41
粉丝 58
获赞 1061
线程的实现,以及相关概念的总结
  • 实现多线程有以下两种途径:
    1.继承Thread类(功能类,有一个子类就能实现多线程)
    2.实现Runnable接口(Callable接口)

  • 线程:没有进行资源的抢占
package cn.dujiang.demo;

// 线程操作类
class MyThread extends Thread{//这是一个多线程的操作类
    private String name ;  //定义类中的属性
    public MyThread(String name){ //定义构造方法
        this.name = name ;
    }
    @Override
    public void run() {
        //覆写run()方法,作为线程的主体操作方法
        for (int i = 0; i < 200; i++) {
            System.out.println(this.name +" --> "+ i);
        }
     }//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
    public static void main(String[] args) {
        MyThread mt1 = new MyThread("线程1");
        MyThread mt2 = new MyThread("线程2");     
        MyThread mt3 = new MyThread("线程3");

        mt1 .run();     
        mt2 .run();
        mt3 .run();
    }
}
 //直接调用run()方法,并不能启用多线程,所以以上代码,并没有启动多线程
  • 线程:交替执行(资源进行抢占)
package cn.dujiang.demo;

// 线程操作类
class MyThread extends Thread{//这是一个多线程的操作类
    private String name ;  //定义类中的属性
    public MyThread(String name){ //定义构造方法
        this.name = name ;
    }
    @Override
    public void run() {
        //覆写run()方法,作为线程的主体操作方法
        for (int i = 0; i < 200; i++) {
            System.out.println(this.name +" --> "+ i);
        }
     }//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
    public static void main(String[] args) {
        MyThread mt1 = new MyThread("线程1");
        MyThread mt2 = new MyThread("线程2");     
        MyThread mt3 = new MyThread("线程3");

        mt1 .start();       
        mt2 .start();   
        mt3 .start();   
    }
}
  • 线程:避免单继承的局限性
package cn.dujiang.demo;

// 线程操作类
class MyThread implements Runnable{//这是一个多线程的操作类
    private String name ;  //定义类中的属性
    public MyThread(String name){ //定义构造方法
        this.name = name ;
    }
    @Override
    public void run() {
        //覆写run()方法,作为线程的主体操作方法
        for (int i = 0; i < 200; i++) {
            System.out.println(this.name +" --> "+ i);
        }
     }//本线程的功能是进行循环输出,但没有进行资源的抢占
}
public class TestDemo {
    public static void main(String[] args) {
        MyThread mt1 = new MyThread("线程1");
        MyThread mt2 = new MyThread("线程2");     
        MyThread mt3 = new MyThread("线程3");
        new Thread(mt1).start();
        new Thread(mt2).start();
        new Thread(mt3).start();
    }
}
 //以上避免了单继承局限性

℃江

打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP