------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
多线程:就是指应用程序有多条执行路径。
进程:正在运行的应用程序。
线程:进程的执行单元,一条执行路径。
注意:线程不能脱离进程而单独存在也就是线程是依赖于进程存在
举例:迅雷下载 浏览器多个标签页
多线程:多条线程同时处理数据,可以提高效率,但是同时也会消耗CPU资源,所以项目中需仔细斟酌取舍有当
多线程类:Thread
注意:java是不能操作CPU的,所以java提供了一个Thread类,但是底层开线程的东西肯定C或者C++写的,比如native
多线程的实现方式有两种:
方式1:继承Thread类。
A:定义一个类继承Thread类。
B:子类要重写Thread类的run()方法。
C:让线程启动并执行。
注意:调用start()方法,切记不是调用run方法这个方法,
其实做了两件事情,第一,让线程启动。第二,自动调用run()方法。
方式2:
A:创建一个类实现Runnable接口
B:重写run()方法
C:创建类的实例
D:把类的实例作为Thread的构造参数传递,创建Thread对象,让线程启动并执行
注意:既然有了继承Thread类的方式,为什么还要有实现Runnable接口的方式?
1):避免的单继承的局限性
2):实现接口的方式,只创建了一个资源对象,更好的实现了数据和操作的分离。
一般我们选择第二种方式。
这两种方式所用到的方法:
public final String getName():获取线程对象的名称。默认情况下,名字的组成 Thread-编号(编号从0开始)
public final void setName(String name):设置线程名称。
public static Thread currentThread():返回当前正在执行的线程对象引用
多线程经典案例卖票案例:
1:第一种继承Thread方式
tickets 请定义为静态变量因为每个TicketThread实例调用的自己的run方法,所以tickets要写成大家共享的
2:第二种实现Runnable方式
tickets不用加static,因为 多个线层用的都是同一个TicketRunnable所以只要把tickets写到成员位置就ok
多线程:就是指应用程序有多条执行路径。
进程:正在运行的应用程序。
线程:进程的执行单元,一条执行路径。
注意:线程不能脱离进程而单独存在也就是线程是依赖于进程存在
举例:迅雷下载 浏览器多个标签页
多线程:多条线程同时处理数据,可以提高效率,但是同时也会消耗CPU资源,所以项目中需仔细斟酌取舍有当
多线程类:Thread
注意:java是不能操作CPU的,所以java提供了一个Thread类,但是底层开线程的东西肯定C或者C++写的,比如native
多线程的实现方式有两种:
方式1:继承Thread类。
A:定义一个类继承Thread类。
B:子类要重写Thread类的run()方法。
C:让线程启动并执行。
注意:调用start()方法,切记不是调用run方法这个方法,
其实做了两件事情,第一,让线程启动。第二,自动调用run()方法。
方式2:
A:创建一个类实现Runnable接口
B:重写run()方法
C:创建类的实例
D:把类的实例作为Thread的构造参数传递,创建Thread对象,让线程启动并执行
注意:既然有了继承Thread类的方式,为什么还要有实现Runnable接口的方式?
1):避免的单继承的局限性
2):实现接口的方式,只创建了一个资源对象,更好的实现了数据和操作的分离。
一般我们选择第二种方式。
这两种方式所用到的方法:
public final String getName():获取线程对象的名称。默认情况下,名字的组成 Thread-编号(编号从0开始)
public final void setName(String name):设置线程名称。
public static Thread currentThread():返回当前正在执行的线程对象引用
多线程经典案例卖票案例:
1:第一种继承Thread方式
tickets 请定义为静态变量因为每个TicketThread实例调用的自己的run方法,所以tickets要写成大家共享的
2:第二种实现Runnable方式
tickets不用加static,因为 多个线层用的都是同一个TicketRunnable所以只要把tickets写到成员位置就ok