extends thread java_java学习之- 线程继承Thread类

标签(空格分隔): 线程

在java。lang包中有个Thread子类,大家可以自行查阅文档,及范例;

如何在自定义的代码中,自定义一个线程呢?

1.通过对api的查找,java已经提供了对线程这类事物的描述,就是Thread类,创建线程的第一种方式,就是继承Thread类:

2.public void run(),如果该线程是使用独立的Runnable运行对象的run方法,否则该方法不执行任何操作并返回,Thread的子类应该重写该方法;

3.查看API的时候:查看start方法,使用该线程开始执行,java虚拟机调用该线程的run方法;

class Demo extends Thread{

pulbic void run(){

System.out.println("Demo run");

}

}

class ThreadDemo{

public static void main(String[] args){

Demo d=new Demo();

d.start();

}

}

上述:

创建一个子类的步骤如下:

1.定义类继承Thread;

2.复写Thread的run方法;

3.调用线程的start方法,该方法有两个作用,一个启动线程,二调用run方法;

4.new一个对象的时候只是创建了一个线程,并未执行,只有调用了start的方法才是被执行了;

如下代码的分析

package com.wangaling;

class Demo extends Thread{

public void run(){

for(int x=0;x<60;x++) {

System.out.println("demo run-----"+x);

}

}

}

class ThreadDemo{

public static void main(String[] args){

Demo d= new Demo();//创建好一个线程

d.start();

for(int x=0;x<60;x++){

System.out.println("helloworld!----"+x);

}

}

}

执行结果:

demo run-----0

helloworld!----0

demo run-----1

helloworld!----1

demo run-----2

helloworld!----2

demo run-----3

helloworld!----3

helloworld!----4

helloworld!----5

helloworld!----6

demo run-----4

helloworld!----7

demo run-----5

helloworld!----8

demo run-----6

helloworld!----9

demo run-----7

helloworld!----10

demo run-----8

helloworld!----11

demo run-----9

demo run-----10

helloworld!----12

demo run-----11

helloworld!----13

helloworld!----14

demo run-----12

helloworld!----15

demo run-----13

helloworld!----16

demo run-----14

helloworld!----17

demo run-----15

helloworld!----18

demo run-----16

helloworld!----19

demo run-----17

helloworld!----20

helloworld!----21

demo run-----18

helloworld!----22

demo run-----19

helloworld!----23

demo run-----20

helloworld!----24

demo run-----21

helloworld!----25

demo run-----22

helloworld!----26

demo run-----23

helloworld!----27

helloworld!----28

helloworld!----29

helloworld!----30

helloworld!----31

demo run-----24

helloworld!----32

demo run-----25

helloworld!----33

helloworld!----34

demo run-----26

helloworld!----35

demo run-----27

helloworld!----36

demo run-----28

helloworld!----37

helloworld!----38

demo run-----29

helloworld!----39

demo run-----30

helloworld!----40

demo run-----31

demo run-----32

demo run-----33

demo run-----34

demo run-----35

demo run-----36

demo run-----37

demo run-----38

helloworld!----41

demo run-----39

helloworld!----42

demo run-----40

helloworld!----43

demo run-----41

helloworld!----44

demo run-----42

helloworld!----45

helloworld!----46

helloworld!----47

helloworld!----48

helloworld!----49

demo run-----43

helloworld!----50

helloworld!----51

demo run-----44

helloworld!----52

demo run-----45

helloworld!----53

helloworld!----54

helloworld!----55

helloworld!----56

demo run-----46

helloworld!----57

demo run-----47

helloworld!----58

demo run-----48

demo run-----49

demo run-----50

demo run-----51

demo run-----52

demo run-----53

demo run-----54

helloworld!----59

demo run-----55

demo run-----56

demo run-----57

demo run-----58

demo run-----59

Process finished with exit code 0

上述结果产生的分析:

1.main----->d=new demo()产生了一个新的控制单元---->start()开启新的控制单,执行:demo run;

2.main----->d=new demo()---->start()-->新的控制单元,同时朱函数还要继续执行:helloworld;

3.以上就开启一个多线程;

4.ThreadDemo开启了2个执行路径:一个是main,一个是d,那么两个会同时执行吗?其实是不可能的,Windows是多任务操作系统,你看着电视听这音乐,看着是同时执行,其实不是的,执行以下电视,执行以下音乐,他在两个任务之间做了快速切换,你要知道CPU切换的是进程里面的线程,所以到这里大家就会明白为啥任务开的多,反而越慢;

5.目前我们的例子是:一个进程里面有多个线程,多个线程抢夺CPU资源,谁抢到CPU的资源,谁就执行,通过打印看到效果;

6.电脑实现双核,是不是CPU就可以实现了同时执行,双核之后内存就是瓶颈;

7.发现运行结果每次都不同:因为多个线程都在获取CPU的执行使用权,CPU执行到谁,谁就运行明确一点,在某一个时刻,只能有一个程序在运行,当然多核除外,CPU在做着快速的切换,已达到看上去同时执行的效果,我们可以形象的把多线程的运行形容为在互相抢夺CPU的资源或者称之为执行权,这就是多线程的一个特性,叫随机性,谁抢到谁执行,至于执行多长时间目前是CPU说的算;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值