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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄成祚 中级黑马   /  2015-7-31 23:41  /  227 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程
一、 概念理解
进程:是一个正在进行中的程序   如:任务管理器--进程 里面展示的
每一个进程执行都有一个执行循序,该顺序是一个执行路径,或者叫一个控制单元。

线程:线程是程序中一个独立的控制单元。线程控制着进程的执行。

线程是进程中的内容,每个进程至少有一个线程。
Java VM 启动时会有一个进程java.exe 该线程中至少有一个线程负责java程序的执行,该线程运行代码存在于main方法中。该线程称为主线程。

扩展:其实更细节说明jvm ,jvm启动时不止一个线程,还有负责垃圾回收机制的线程。

二、 多线程的存在意义
让程序多部分的代码产生同时运行的效果,附加的还能提高程序的效率。

三、线程的创建(查 API java.lang.thread)
类 Thread
1. 如何在自定义代码中,自定义一个线程?
Java API中已经提供了对线程这类事物的描述 ,用Thread类。

创建线程的第一种方式:继承Thread类。
步骤:
1.创建一个类继承Thread
2.重写Thread类中的run方法
3.调用线程的start方法。
作用:一是启动一个线程,二是调用run方法
演示1
public class ThreadTest {

        public static void main(String[] args) {
                Demo d = new Demo();//new一个对象,就建好了一个线程
        d.start();
}

}
class Demo extends Thread{
        public void run(){
                System.out.println("demo run");
        }
}

演示2
public class ThreadTest {

        public static void main(String[] args) {
                Demo d = new Demo();//new一个对象,就建好了一个线程
                for(int i=0;i<60;i++){
                        System.out.println("demo run---"+i);
                }
        }

}
class Demo extends Thread{
        public void run(){
                //System.out.println("demo run");
                for(int i=0;i<60;i++){
                        System.out.println("demo run---"+i);
                }
        }
}
明确一点,在某一时刻,只能有一个程序在运行(多核除外),CPU在做着快速的切换,以达到看上去是同时运行的效果。
可以形象的把多线程运行行为在互相抢夺CPU的执行权。
这就是多线程的一个特性:随机性,谁抢到谁执行,至于执行多久,由CPU决定。

思考:为什么要覆盖run方法?

Thread类用于描述线程,该类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。即run方法用于存储线程要运行的代码。

注意!!
若上述程序不是用的d.start(); 而是d.run的话则会先执行run方法的类容,执行完后才会执行main里面的代码,因为直接用d.run是把这个方法加到主线程中来了,只有一个线程。

0 个回复

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