一.概述

  进程:正在执行的应用程序

  线程:进程的执行单元,执行路径

  单线程:一个应用程序只有一条执行路径

  多线程:一个应用程序有多条执行路径

二.两种实现方式, 下面为第一种方式: 继承Thread类.

1.继承Thread类, 重写run()方法.

  步骤:

    a.自定义类继承Thread类

    b.重写run()方法

      为什么重写run()?

      因为不是类中所有代码都要被线程执行, 为了区分哪些代码需要被执行, java提供了Thread类中的run()方法用来包含那些被线程执行的代码

    c.创建自定义类的对象

    d.启动线程对象

      用run()还是用start()?

      区别:

        run()仅仅是封装被线程执行的方法, 直接调用时属于普通方法;

        start()首先启动了线程, 然后再由jvm去调用该线程的run()方法.

2.getName();setName()获取和设置线程名称

3.线程的两种调度模型:

  分时调度模型: 所有线程轮流使用cpu使用权限, 平均分配每个线程占用cpu的时间.

  抢占式调度模型: 优先让优先级高的线程使用cpu, 如果线程的优先级相同, 则随机选择一个. 优先级高的线程会获得cpu相对较多的时间片(也就是执行权).

  java使用的是抢占式调度模型.

  如何设置和获取线程优先级?

    getPriority();

    setPriority(int priority);

      设置线程优先级1-10: setPriority()

      max  10

      min  1

      默认  5

4.线程API

  sleep(int 毫秒): 线程休眠

  join(): 线程加入, 该线程先执行完, 其他线程才可以执行

  yield(): 线程礼让(可以让多个线程更和谐, 但保证不了轮流一次)

  setDaemon(boolean on): 后台线程(将该线程标记为守护线程或用户线程例如张飞和关羽守护刘备, 当正在运行的线程都是守护线程时, jvm退出. 该方法必须在启动线程前调用即在执行start()方法前执行setDaemon(true)方法)

  stop(): 中断线程(中断过于暴力, 线程不安全, 不建议使用)

  interrupt(): 中断线程(把线程状态终止, 并抛出一个InterruptedException)

    如果线程在调用Object类的wait(), wait(long), 或wait(long, int )方法, 或者该类的join(), jion(long), jion(long, int), sleep(long)或sleep(long, int)方法过程中受阻时, 则其中断状态将被清除, 收到一个InterruptedException.

  详细查看jdk的API文档查Thread.

5.线程生命周期

  新建

  就绪

  运行

    阻塞: sleep()和wait()操作将线程阻塞,sleep()和notify()唤醒线程

  死亡

  

java多线程(一)之继承Thread类的更多相关文章

  1. Java多线程实现......(1,继承Thread类)

    MyThread.java 中的代码: public class MyThread extends Thread{ private int startPrint,printCount; private ...

  2. java学习之- 线程继承Thread类

    标签(空格分隔): 线程 在java.lang包中有个Thread子类,大家可以自行查阅文档,及范例: 如何在自定义的代码中,自定义一个线程呢? 1.通过对api的查找,java已经提供了对线程这类事 ...

  3. Java之同步方法处理继承Thread类的线程安全问题

    /** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 10 ...

  4. Java之多线程方式一(继承Thread类)

    /** * 多线程的创建,方式一:继承于Thread类 * 1. 创建一个继承于Thread类的子类 * 2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中 * ...

  5. 【Java多线程系列二】Thread类的方法

    Thread实现Runnable接口并实现了大量实用的方法. /* * 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机会,它自己也有可能再次得到执行机会 */ public s ...

  6. java多线程技能-使用多线程-继承Thread类

    /* 使用多线程可通过继承Thread类或实现Runnable接口. Thread和Runnable的关系:public class Thread implements Runnable. 使用thr ...

  7. Java通过继承thread类与实现Runnable接口实现多线程的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 一.通过继承T ...

  8. Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别

    1. Java中线程的创建有两种方式:  (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...

  9. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

随机推荐

  1. JS动态改变select选择变更option的index值

    document.getElementById("louyuming").options[0].selected=true; function jsSelectIsExitItem ...

  2. 用SBT编译Spark的WordCount程序

    问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需要 ...

  3. [14] 齿轮(Gear Wheel)图形的生成算法

    顶点数据的生成 bool YfBuildGearwheelVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices ...

  4. [置顶] Django 微信开发(一)——环境搭建

    Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...

  5. java.net.URI 简介 文档 API

    URI 简介 文档地址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh public final class java.net.URI extend ...

  6. 常见MIME类型

    Response对象通过设置ContentType使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据.  MIME类型格式:类别/子类别;参数 Co ...

  7. Cognos配置oracle类型内容库时报错

    Cognos初次安装,创建内容库为Oracle数据库类型的时候,报下面的错误 [Content Manager database connection][ ERROR ] The database c ...

  8. 没有main函数的helloworld

    差点儿全部程序猿的第一堂课都是学习helloworld程序,以下我们先来重温一下经典的C语言helloworl /* hello.c */ #include <stdio.h> int m ...

  9. 【Nodejs】理想论坛帖子爬虫1.02

    在1.01版本中,我发现各回调函数找到数据后再插入数据库有个竞争问题不好解决,如果等所有回调都完成也没有好的处理方法,因为启动不止一处启动了新的TopicSpider实例. 于是我决定把读数据和写DB ...

  10. 多个桌面Deskspace如何使用

    1 给Deskspace设置背景.在DeskSpace选项中设置显示背景为天空箱体图像(软件自带的图像效果,也可以使用静态图像,即自己的图片) 2 给六个桌面各设置一个背景(也可以使用同一个背景)右击 ...