Java线程
来源:互联网 发布:婴儿面膜淘宝授权书 编辑:程序博客网 时间:2024/06/06 06:47
Java是一门支持多线程的语言,首先要先了解,线程和进程的区别。
进程:程序本身是一堆二进制文件,只有加载进内存并运行,才叫进程。
线程:线程是进程的最小单位,不能单独运行,只存在进程中。
区别:线程是进程的最小调度单位,进程之间通信困难,因为不共享内存空间,同一进程中的多个线程可以互相通信,因为共享。
Java实现多线程的二种方式:
1.extends Thread
2.implement Ruanble
Thread类也实现了Ruanble接口
二者的区别:
不管是继承Thread还是实现Runable都需要重写或实现Run方法,然后通过Thread类的start()方法来使线程转化到可运行状态
Thread类提供了以Ruanble接口的实现类为参数的构造方法,因为它本身的run()方法不具有实现,调用的是参数的run()方法的实现,又或者你可以继承Thread类,来重写它的run()方法,来实现线程。
同步:在多线程的环境中,可能会有二个或者更多线程试图同时访问一个有限资源,所以使用同步对资源上锁,可以同步方法,也可以同步代码块,推荐同步代码块因为它是低粒度的
sleep 和wait的区别:
首先:wait方法是fianl的,是Object类的,sleep方法是Thread类的,其次,调用wait方法的时候,会释放掉对象的锁,而sleep只是休眠,并不会释放对象的锁
notify notifyAll
当调用wait以后,释放掉了当前对象的锁,直至另一线程调用该对象的notify方法,该线程才被唤醒,进入锁池等待。
线程的生命周期:
首先new Thread() 创建了线程,当main线程调用该线程的start()方法的时候线程进入可运行状态(Runnable),如果获得cpu的调度,则进入运行状态(Running),如果安稳执行完run方法,则线程Dead。
如果线程在进入可运行状态后,遇到同步代码块或者同步方法,但是并没有获得对象的锁,则从运行状态进入锁池,等待锁的释放,然后进入可运行状态,直到获得cpu调度,才可运行。
如果线程在进入可运行状态后,在获得对象锁的情况下,调用对象的wait方法,会进入等待池,直到其他线程调用该对象的notify方法,从从等待池进入锁池
线程的dead不能通过stop来结束,那是不安全的,只能通过run方法的自然结束
- Java线程:什么是线程
- Java线程:线程池
- java线程--线程退出
- JAVA-线程/线程锁
- Java线程:什么是线程
- Java线程:线程中断
- Java线程:线程状态
- Java线程: 线程调度
- Java线程:线程交互
- java--线程--线程池
- java 线程
- Java线程
- java线程
- java线程
- Java线程
- Java线程
- java线程
- JAVA 线程
- 请勿私信或者留言,请写信给我:i@brightguo.com
- 实验四,基于NRF24L01的RFID发送与接收
- 113,字符串查找
- Android布局问题: No resource found that matches the given name (at 'layout_above' with value @id/tv)
- project euler 88
- Java线程
- Java性能优化——开篇
- HDMI信号通过FPGA传到 电脑.(输入卡的回显)
- Pandas常用操作
- 工作压力与情绪管理
- Mybatis3源码分析(09)-SqlSession创建及简要说明
- 关于web性能的思考与分享[08]雅虎14条军规—高性能网站建设指南
- 读《暗时间》(刘未鹏)若章有感
- Altium Designer(Protel)网络连接方式Port和Net Label详解