黑马程序员——自学笔记10(多线程及其创建方法)

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

多线程:进程是计算机上正在执行的一个程序,每个程序都有一个执行顺序,该顺序是一个执行路径或叫控制单元,而线程就是这个独立的控制单元

        ①一个进程至少有一个线程在执行

        ②线程控制着进程的执行

        ③java.exe中至少有一个线程在控制着进程的执行,而这个线程存在于main方法中,被称为主线程

        ④在单核时代,线程执行具有一个特点,即随机性

线程的运行状态:

线程创建的两种方法:

第一种:继承Thread类,并重写Thread中的run()方法

   class Demo extends Thread{

           //重写原因:只有Thread类中的run()方法是用来封装线程要执行的代码的

           public void run(){

                     线程要执行的语句;

           }

           public static void main(String[] args){

                     Demo d=new Demo();

                               d.start();//这是Thread类中的方法,作用是开始执行线程并同时调用run()方法。若写成d.run(),只是在调用本子类中的run()方法,而线程被创建了却没执行

}

}

①线程数=主线程+new的几个线程对象

②每个线程都有默认名称,即从0开始编号(Thread-0).事实上,在我们初始化线程对象时,其已经被父类中的构造方法赋予了名称,我们只需在子类的构造方法中用super(name)来调用即可

getName():获取当前正在执行的线程名称,可用this.调用,但这种方式并不通用于线程创建方法,而Thread.currentThread().getName()静态方法是通用的,一般用它

③局部变量在每个线程中都具有独立的一份

第二种:实现Runnable接口,重写其中run()方法

    class Ticket implements Runnable{

             private int tickets=100;

             public void run(){

                  while(true){

                     if(tickets>0)

                           System.out.println(Thread.currentThread().getName()+" sales "+tickets--);

                  }

             }

            public static void main(String[] args){

                     Ticket t=new Ticket();

                     Thread t1=new Thread(t);//想调用Ticket中的run()方法,但它重写的不是Thread类中的run()方法,而是Runnable接口中的,那我们就调用Thread类中的构造方法

                     Thread t2=new Thread(t);//Thread(Runnable r)来明确我们想用来调用run()方法的对象

                     t1.start();//不能一个线程start四次

                     t2.start();

            }

    }

两种创建线程方法的优劣:

   第一种:不能使子类再继承其它父类,重写其中方法

   第二种:避免了单继承的局限性,所以推荐使用第二种方法

To be continue...

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值