Java多线程编程
来源:互联网 发布:馥绿德雅洗发水知乎 编辑:程序博客网 时间:2024/06/05 14:58
一、概念
进程:一个正在运行的程序称为进程
线程:每一个程序可以分为很多任务,能够在程序内运行多线程的程序称为多线程程序。
关键字:thread(线程 )
多任务的两种实现方式:
1.基于线程
特点:
基于线程的多任务处理环境中,线程是最小的处理单位。
线程是进程内部单一的一个顺序控制流,共享内存地址空间;进程内部再分多任务,即线程。
2.基于进程
特点:
是指一种”自包容”的运行程序,有自己独享的地址空间。
允许计算机同时运行两个或更多的程序。
创建和启动线程
方法一:
创建:声明一个Thread类的子类,并且覆盖run()方法;
启动:直接new出子类对象,调用start方法即可
例如:
class mythread extends Thread{
public void run(){ /* 覆盖该方法*/ 线程的主方法(需要线程做什么事情)}
}
方法二:
创建:实现runnable接口,重写Run方法;
启动:
(1)new出Thread对象,传入实现类对象,调用Thread对象的start()方法;
(2)在实现类的构造方法里面new出Thread对象,调用该对象的start()方法,最后在main方法里面创建实现类对象即可。
注意:子线程通过主线程产生,但是子线程产生以后,在执行地位上两者一致;
Thrad. sleep(1000);1000表示毫秒 :当前线程休眠1000毫秒
synchronized 同步关键字 位于访问修饰符后面
线程的生命周期
线程一共有五种状态:
1、新建状态:
new出Thread对象
2、就绪状态:
执行Start方法之后,但在执行Run方法之前;
3、运行状态:
执行Run方法
4、中断状态:执行Run方法可能出现的状态
5、死亡状态:
清理资源,回收分配空间
*造成中断的原因:
1.由于优先级的关系,线程没有抢到CPU被执行;(优先级最小为1,最大优先级为10级,默认为5级)。可以通过this.setPriority(10)方法设置优先级。注意:优先级高只是代表被执行的几率更高,并不代表一定被先执行
2.使用sleep()方法使线程休眠;休眠时间结束以后重新参与CPU竞争
3.阻塞(I/O事件)比如Scanner等待输入时 就是阻塞;
4.wait-notify机制(线程间的通信机制)
wait()
5.挂起机制 调用yield()方法 线程已显示出让CPU控制权 (强制其它线程退出)
线程同步
线程安全性问题:
原因:如果多个线程访问同一资源对象,有可能会造成该资源对象数据混乱;
解决:
使用同步的方式解决;(锁机制)
使用synchronized关键字(同步)
1.在资源身上使用同步关键字;--**同步方法**public synchronized void className(){}2.资源本身身上不加锁,在线程中加锁(**同步块**)public void run(rs){ // thread的对象名 //资源调用处加同步---同步块 synchronized(){ }}
新的问题:有可能造成死锁;
死锁:当两个线程同时访问一对相互依赖的同步资源时,会出现死锁
同步效果:线程安全了,但效率低了;
StringBuffer:线程安全,可变
StringBuilder:线程不安全,可变
0 0
- 【JAVA】JAVA多线程编程
- 【java】:java多线程编程
- Java多线程编程初步
- Java 多线程编程
- Java多线程编程详解
- Java多线程编程经验谈
- Java 多线程编程
- Java多线程编程详解
- Java多线程编程详解
- Java 5.0多线程编程
- Java 5.0多线程编程
- Java 5.0多线程编程
- Java多线程编程详解
- Java多线程编程详解
- Java 5.0多线程编程
- Java多线程编程详解
- java基础教程-多线程编程
- Java多线程编程详解
- 3、struts2 默认配置、数据处理的集中方式、请求数据封装、日期转换器
- C++实验5--数组分离
- Js实现下拉菜单
- 搜狗笔试:有两个数,A和B,六种操作分别是+12,-12,+7,-7,+5,-5。A经过若干次操作,变成B
- 南阳OJ上的一个题
- Java多线程编程
- mybatis xml文件中大于小于符号解释
- 动物园的猴子
- 浅谈外包管理
- 前端实践--JavaScript--事件
- 使用javascript实现二级联动菜单
- 莫队算法学习小记
- “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落、错位”的原因及解决方法
- 【GOF23设计模式】_原型模式JAVA233-234