A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马的学员 中级黑马   /  2015-7-22 22:55  /  241 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马的学员 于 2015-7-22 22:58 编辑

线程是进程中一个负责程序执行的控制单元,一个进程中可以有多个线程叫做多线程,开启多个线程是为了同时进行多部分代码。每个线程都有自己的运行内容,这个内容称为线程要执行的任务。
如何创建一个线程?
其中一种方法就是继承Thread类
步骤:
(1)定义一个类继承Thread类
(2)覆盖Thread类中的run方法
        run方法中定义的是线程要运行的任务代码,开启线程是为了运行指定代码,所以只有继承Thread类,并复写run方法,将运行的代码定义在run方法中即可。
(3)直接创建Thread的子类对象创建线程
(4)调用start方法开启线程并调用线程方法
简单代码如下:
class Demo1 extends Thread //定义一个类继承线程类Thread
{
        private String name;//私有一个字符串引用 name
        Demo1(String name)//构造函数对Demo1进行初始化并具有属性name
        {
                super(name);
       //this.name=name;
         }

        public void run()//定义一个run函数来覆盖Thread
        {
                for(int x=0;x<10;x++)
                {
                        for(int y=-100000;y<890980;y++){}
                        System.out.println(name+"....x="+x+"....name="+Thread.currentThread().getName());//输出里面调用了getName方法
                }
        }
}
class DemoThread
{
   public static void main(String[] args)
{   Demo1 s1=new Demo1("小皓");//创建Thread子类对象
     Demo1 s2=new Demo1("小静");
         s1.start();//调用strat方法开启线程
         s2.start();
         for(int  w=0;w<10;w++)
           {

              System.out.println("小胖子....w="+w+"....name="+Thread.currentThread().getName());
           }
               
        }
}
运行结果如下:


运行结果如下:
小胖子....w=0....name=main
小胖子....w=1....name=main
小胖子....w=2....name=main
null....x=0....name=小静
null....x=0....name=小皓
null....x=1....name=小静
小胖子....w=3....name=main
null....x=2....name=小静
null....x=1....name=小皓
null....x=3....name=小静
null....x=4....name=小静
null....x=5....name=小静
null....x=6....name=小静
null....x=7....name=小静
null....x=8....name=小静
null....x=9....name=小静
小胖子....w=4....name=main
小胖子....w=5....name=main
小胖子....w=6....name=main
小胖子....w=7....name=main
小胖子....w=8....name=main
小胖子....w=9....name=main
null....x=2....name=小皓
null....x=3....name=小皓
null....x=4....name=小皓
null....x=5....name=小皓
null....x=6....name=小皓
null....x=7....name=小皓
null....x=8....name=小皓
null....x=9....name=小皓
总结:
(1)线程运行有随机性,抢占cpu
(2)整个类去继承Thread只是为了覆盖run方法,有点浪费,并且java不支持多继承势必会造成局限性。
(3)如果多线程执行的是一个有总数的项目 比如多线程进行卖票,就会new出多个对象,每个对象都是独立的这种方法就不行了。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马