黑马程序员-江远云 我的java语言基础之路5-多线程篇
来源:互联网 发布:微信服务号域名是什么 编辑:程序博客网 时间:2024/05/20 03:37
---------------------- android培训、java培训、期待与您交流! ----------------------
创建线程 -继承Thread类
让多条代码同时执行,自定义一个线程。进程真正创造是系统帮你创建的,线程也是系统帮你创建的
核心包lang包中有个Thread类,就是执行线程
创建方式:一是将类继承Thread,成为我小弟,事情就办好了。要先搞一个子类,通过对API的查找,JAVA已经提供了对线程这类事物的描述,就是Thread
创建线程的第一种方式:继承Thread类。继承完以后,就要创建一个对象,其实你建立好一个对象,就创建好一个线程,接着复写Thread的run方法,调用线程的start方法
这方法有两个作用:启动线程,调用run方法。主线程先执行,是虚拟机开启的,到这里,就有一个新的单位被创建,哥们到这就多了一个执行路径,于是他也开动了,这时,主线程也还在执行
发现运行结果每一次都不同,因为多个线程都在获取cpu的执行权,cpu执行到谁,谁就运行,明确一点,在某一时刻,只能有一个程运行。(多核除外)。cpu在做着快速的切换,以达到看上去是同时运行的效果
我们可以把多线程的运行行为在互相抢夺cpu的执行权,这就是多线程的特性:随机性,谁抢到谁执行,执行多长时期是cpu说的算
创建线程 -run和start特点
要让某些代码起到同时运行的效果,Thread类用于描述线程,这类就定义了一个功能,用于存存储线程要运行的代码,这存储功能就是run方法
线程提供了一个空间。也就是Thread类中的run方法,用于存储纯种要运行的代码。虚拟机定义的。存在main里边就是主线程了
沿袭父类功能,把你的功能复写掉,建立起自己的代码。复写run方法目的是将自定义代码存储在run方法,让线程运行,start是开线程的run方法,run仅仅是对象调用方法,而线程创建了,并没有运行。Thread调用到低层,run只封装代码。
线程运行状态
常见四种状态,第一种状态是被创建,new一个对象就是一个线程,运行,休息,挂了,阻塞,有资行资格,没有执行权,被抢了。
获取线程对象以及名称
线程也有自己的名称,找线程对象的方法,因为它最熟悉,线程都有自己默认的名称。Thread-编号。
创建线程的第二种方式:实现Runnable接口。
步骤:
1,定义了实现Runnable接口。
2,覆盖接口的run方法。将多线程要运行的代码存入其中。
3,创建Thread类的对象(创建线程),并将Runnable接口的子类对象作为参数传递给Thread的构造函数。
为什么要传递?因为线程要运行的代码都在Runnable子类的run方法中存储。所以要将该run方法所属的对象
传递给Thread。让Thread线程去使用该对象调用其run方法。
4,调用Thread对象的start方法。开启线程。
建议使用实现方式,因为避免了单继承的局限性,所以创建线程建议使用第二种方式。
class Ticket implements Runnable
{
private int tick = 100;
public void run()
{
while(true)
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.stsra();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
- 黑马程序员-江远云 我的java语言基础之路5-多线程篇
- 黑马程序员-江远云 我的java语言基础之路1-异常篇
- 黑马程序员-江远云 我的java语言基础之路2-IO篇
- 黑马程序员-江远云 我的java语言基础之路3-网络编程篇
- 黑马程序员-江远云 我的java语言基础之路4-语句篇
- 黑马程序员-江远云 我的java语言基础之路6-集合框架篇
- 黑马程序员-江远云 我的java语言基础之路7-单词篇
- 黑马程序员-江远云 我的java语言基础之路9-7k月薪面试题破解(交通灯管理系统)
- 黑马程序员-江远云 我的java语言基础之路10-7k月薪面试题破解(银行业务系统)
- 黑马程序员-江远云 我的java诺言基础之路8-故事篇
- 黑马程序员---Java基础篇之Java语言的概述
- [黑马程序员]--Java语言基础-多线程
- 黑马程序员-----Java基础-----多线程的详解
- 黑马程序员---Java基础-多线程的实现
- 黑马程序员-Java语言基础– 多线程 第11天
- 黑马程序员-Java语言基础– 多线程 第12天
- 黑马程序员——Java语言基础:多线程
- AdaultBird--我的黑马程序员之路!Chapter13---java编程基础!
- [转]string:值类型?引用类型?
- 黑马程序员-江远云 我的java语言基础之路4-语句篇
- 再谈马云的一淘“要让百度睡不着”
- CSS中background-position使用技巧
- hive中对lzo压缩文件建立索引实现并行处理
- 黑马程序员-江远云 我的java语言基础之路5-多线程篇
- Win7 "未识别网络" 的20种常见解决方案
- hdu 1728
- 第4章 变量、作用域和内存问题 (一)
- IC datasheet 查询网站
- 黑马程序员-江远云 我的java语言基础之路6-集合框架篇
- struts2 在Action简单数据验证,取得request,session,application,
- BJCA证书加密Dome
- C#反射之Assembly