java多线程(一)之继承Thread类
一.概述
进程:正在执行的应用程序
线程:进程的执行单元,执行路径
单线程:一个应用程序只有一条执行路径
多线程:一个应用程序有多条执行路径
二.两种实现方式, 下面为第一种方式: 继承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类的更多相关文章
- Java多线程实现......(1,继承Thread类)
MyThread.java 中的代码: public class MyThread extends Thread{ private int startPrint,printCount; private ...
- java学习之- 线程继承Thread类
标签(空格分隔): 线程 在java.lang包中有个Thread子类,大家可以自行查阅文档,及范例: 如何在自定义的代码中,自定义一个线程呢? 1.通过对api的查找,java已经提供了对线程这类事 ...
- Java之同步方法处理继承Thread类的线程安全问题
/** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 10 ...
- Java之多线程方式一(继承Thread类)
/** * 多线程的创建,方式一:继承于Thread类 * 1. 创建一个继承于Thread类的子类 * 2. 重写Thread类的run() --> 将此线程执行的操作声明在run()中 * ...
- 【Java多线程系列二】Thread类的方法
Thread实现Runnable接口并实现了大量实用的方法. /* * 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机会,它自己也有可能再次得到执行机会 */ public s ...
- java多线程技能-使用多线程-继承Thread类
/* 使用多线程可通过继承Thread类或实现Runnable接口. Thread和Runnable的关系:public class Thread implements Runnable. 使用thr ...
- Java通过继承thread类与实现Runnable接口实现多线程的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 一.通过继承T ...
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
1. Java中线程的创建有两种方式: (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
随机推荐
- Derby安装,创建数据库,在Java程序中使用Derby
1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹, ...
- 非常优秀的iphone学习文章总结!
This site contains a ton of fun tutorials – so many that they were becoming hard to find! So I put t ...
- java读取文件并获得文件编码,转换为指定编码的工具类代码
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 用SBT编译Spark的WordCount程序
问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需要 ...
- 第四章 CopyOnWriteArraySet源码解析
注:在看这篇文章之前,如果对CopyOnWriteArrayList底层不清楚的话,建议先去看看CopyOnWriteArrayList源码解析. http://www.cnblogs.com/jav ...
- iOS开发-沙盒(sandbox)机制
苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...
- Linux 学习 step by step (1)
做为一个技术小菜的android的程序员,做应用层的app觉得没有什么意思,于是像多学点android底层的知识.最近在看<Android 技术内幕(系统卷)> . 我打开书的第一张,便花 ...
- 【LeetCode】Path Sum II 二叉树递归
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- 为什么要使用href=”javascript:void(0);”?
JavaScript中语句最后的分号是可以缺省的,那为何要使用javascript:;而不是javascript:呢? 是习惯还是规范,我疑惑了! 具有代码洁癖的coder们,没事多写一个分号,圣洁的 ...
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?
这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的文件夹. 用的是 Environment.getExternalStorageDirectory() 这种方法.然后在获 ...