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

© MUFCRyanCR7 中级黑马   /  2015-9-2 20:14  /  115 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
进程:一个正在执行中的程序,每个进程都执行一个顺序,该顺序是一个执行路径/控制单元。
线程:进程中的一个独立控制单元,线程控制这进程的执行。一个进程中至少有一个线程。

JVM中,启动时有一个进程java.exe,该进程中至少有一个线程执行java程序,且该线程运行代码存在于main方法中,该线程称为主线程。

扩展:实际在JVM中,除了主线程执行java程序外,至少还有一个线程在执行垃圾回收机制。

如何用代码自定义线程?
        通过API查找,java已提供线程的封装对象Thread类,由此,有两种创建方法:
                1.创建方法一:继承Thread类。
                        步骤:1.定义类继承Thread。
                                  2.覆盖run方法。目的:将自定义的代码存储在run方法中,让线程运行。
                                  3.调用线程的start方法,其有两个功能:启动线程、调用run方法。

多线程特点:随机性,在某一刻,只能有一个线程被cpu执行(多核cpu除外),谁得到cpu的执行权就执行谁,执行时长目前由cpu控制。

自定义子类覆盖Thread类中run方法的目的:用于存储要运行的代码。

线程都有自己的默认名称,格式:Thread-编号,编号从0开始依次递增。
static Thread currentThread():获取当前线程对象。
getName():获取线程名称。

线程名称设置:setName或构造函数。

*/

package thread;
class Demo extends Thread
{
        //private String name;
        Demo(String name)
        {
                //this.name=name;
                super(name);
        }
        public void run()
        {               
                for (int x=0; x<20; x++)
                {
                        System.out.println(Thread.currentThread().getName()+"Hello Demo!-------"+this.getName()+x);
                        //此处:Thread.currentThread()==this,但是前者更通用且会涉及到第二种线程创建方式,故因使用前者。
                }
        }
}
class Thread1
{
        public static void main(String[] args)
        {
                Demo d1 = new Demo("Ryan");
                Demo d2 = new Demo("MUFC");
                d1.start();                //开启线程并调用run方法
                d2.start();
                //d1.run();                只是调用run方法,未开启线程,程序只能以主线程且只有主线程的单线程模式运行,无法达到多个程序同时运行的效果。
               
                for (int x=0; x<20; x++)
                {
                        System.out.println("main Hello World!-------"+x);
                }
        }
       
}

0 个回复

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