JAVASE之多线程初识
来源:互联网 发布:五轴编程招聘 编辑:程序博客网 时间:2024/05/18 00:54
多线程:
进程:进程指正在运行的程序,确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能.
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序.
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程.
多线程:即就是一个程序中有多个线程在同时执行.
Thread类
Thread是程序中的执行线程.java虚拟机允许应用程序并发运行多个执行线程.
Thread类的构造方法:
Thread();分配新的Thread对象
Thread(String name):分配新的Thread对象.将指定的name作为其线程名称.
常用方法:
Void start();使该线程开始执行;java虚拟机调用该线程的run方法.
Void run();该线程要执行的操作:如循环100次打印变量的值
Static void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
创建线程的步骤:
1,定义一个类继承Thread
2,重写run方法
3,创建子类对象,就是创建线程对象.
4,调用start()方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法.
创建多线程的方式一:
一种是将类声明为Thread的子类,该子类应重写Thread类的run方法.接下来可以分配并启动该子类的实例.
Thread
String getName();返回该线程的名称.
Void setName(String name):改变线程名称,使之与参数name相同.
CPU执行程序的随机性.
实现线程二:实现Runnable接口
创建线程的另一种方法是声明实现Runnable接口的类,该类然后实现run方法.
然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程.
然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。
为何要实现Runnable接口,Runable是啥玩意呢?继续API搜索。
查看Runnable接口说明文档:Runnable接口用来指定每个线程要执行的任务。包含了一个 run 的无参数抽象方法,需要由接口实现类重写该方法。
Void run();使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法.
构造方法:
Thread(Runnable target):分配的Target对象,以使target作为其运行对象.
Thread(Runable target,String name):分配新的Thread对象,以便将target作为其运行对象,将指定的name作为其名称.
创建线程的步骤:
1. 定义类实现Runnable接口
2. 覆盖借口中的run方法
3. 创建Thread类的对象
4. 将Runable接口的子类对象作为参数传递给Thread类的构造函数.
5. 调用Thread类的start方法开启线程.
同步锁:
问题出现的原因:
要有多个线程
要有被多个线程所共享的数据
多个线程并发的访问共享的数据.
Synchronized:同步(锁),可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问.
同步代码块:
Synchronized(锁对象){
}
注意:锁对象需要被所有的线程共享.
同步:安全性高,效率低.
非同步:效率高,但是安全性低.
同步方法:使用关键字synchronized修饰的方法,一旦被一个线程访问,则整个方法全部锁住,其他线程则无法访问.
注意:
非静态同步方法的锁对象是this
静态的同步方法的锁对象是当前类的字节码对象.
线程的生命周期:
就是一个对象的初始化到消失
新建----就绪----运行----死亡 等待
新建(创建线程对象)---就绪(具备了执行条件和没有具备执行权利两种状态)----运行(具备了执行条件,具备了执行权利)----死亡(线程对象变成了垃圾.)
- JAVASE之多线程初识
- JAVASE之多线程
- JAVASE之多线程
- 黑马程序员----JAVASE之多线程
- JavaSE学习笔记之多线程
- 初识windows编程之多线程
- 黑马程序员-javaSE学习之多线程
- javase重新开始系列之多线程基础
- 黑马程序员——JavaSE之多线程原理分析一
- JAVASE之多态
- 黑马程序员——JavaSE之多线程中关于锁的理解 二
- 初识C++之多态
- javase线程
- JavaSE之多态(一)
- 初识 javase(上)
- 初识 javase(下)
- JAVASE之初识
- android线程之多线程
- Eclipse安装svn插件的几种方式
- 【嵌入式学习历程16】Linux网络编程(TCP篇)
- Lua笔记——2.表Table
- XListView
- ZUFE 2017院赛
- JAVASE之多线程初识
- 节间通讯(gossip)
- ListView的多条目的适配器
- Python学习 第二天任务 (二:【基于Python编程从入门到实践】第二章 数字和注释 书本及动手试一试)
- Java设计模式-代理模式
- python3之1005.继续(3n+1)猜想 (25分)
- 77. Combinations
- 搭建LNMP环境
- POJ