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 de 576 mo 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--- 160a -->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说的算;
- java多线程学习1-继承Thread类和实现Runnable接口来创建线程
- Java 多线程学习(3):通过继承Thread类来创建线程
- JAVA学习笔记(三十七)- 创建继承Thread的线程
- java Thread类 线程学习 一
- JAVA 线程学习 - Thread了解
- 【Java多线程学习】Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- javaThread学习(chapter1—线程的创建)
- Java高并发编程学习--17. 线程的ThreadPool
- java Thread类 线程学习 一:
- 在java编程时,线程创建实现Runnable接口与继承Thread类的不同
- Java中继承thread类与实现Runnable接口的区别(实现线程)
- java线程学习-thread的一些方法
- Java线程演示样例 - 继承Thread类和实现Runnable接口
- java Thread类 线程学习 一:
- Java 学习线程Thread
- java两种启动线程方法根本不同,Thread继承和实现Runable接口
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
- Java传统多线程的实现有两种方法,继承Thread类或者实现Runnable即可.线程启动时调用start()方法.
- 线程创建:继承Thread、接口Runnable(静态代理模式)、接口CallableJAVA169-173
- java Thread学习(线程间协作)