黑马程序员----多线程
来源:互联网 发布:查看oracle端口号 编辑:程序博客网 时间:2024/06/18 18:23
android培训、java培训、期待与您交流! ----------------------Java Thread:是通过java.lang.thread
public class Thread
extends Object
implements Runnable
runnable
方法调用
线程启动
只要能使用thread接口就不要从Thread继承
线程状态:
节点流类型:
两种方式创建新的线程:
第一种:
定义线程类实现‘Runnable接口
Thread myThread = new Thread (target)//target为Runnable接口类型
Runnable中只有一个方法:
public void run () //定义线程运行体
使用Runnable接口可以为多个线程提供共享的数据
实现Runnable接口的类的run方法定义中可以使用Thread的静态方法
Public static Thread currentThread() 获取当前线程的引用
第二种:
可以定义一个Thread的子类并重写其run方法
class MyThread extends Thread{
public void run (){
…………………
}
}
然后生成该类的对象
MyThread mythread = new MyThread(….)
Main方法和 run方法
对象的多态性
用thread类创建线程
1要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数中,并且run函数所在的类是Thread类的子类。倒过来看,我们要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖thread中的run函数,. 在子类的 run函数中调用想在新线程上运行的程序代码
2启动一个新的线程,我们不是直接调用thread的子类对象的run方法,而是调用Thread子类对象的Start(从Thread类的继承到的)方法,thread类对象的start方法将产生一个新的线程,并再该线程上运行该Thread类对象的中的run方法。根据面向对象的运行时的多态性,在线程上实际运行的是thread子类(也就是我们写的那个类)对象中的run方法
3由于线程的代码在run方法中,那么方法执行完成以后线程也就相应的结束。因而我们可以通过控制run方法中循环的条件来控制线程的结束
用runnable接口创建多个线程
适合多个相同程序代码的线程去处理同一资源的情况,把虚拟cpu(线程)同程序的代码,数据有效分离,较好的体现了面向对象的设计思想
可以避免由于java的单继承特性带来的局限。
当线程被构造时,需要的代码和数据通过一个对象作为构造函数实参传递进去,这个对象就是一个实现了Runnable接口的实例。
事实上几乎所有多线程应用都可以用Runnable接口方式
synchronized()作用,原理
synchronized()后面必须加上一个对象
某个方法后中加入Synchronized后,
多线程在实际中的应用
1:火车票售票系统的解析:
2:网络聊天程序的收发:
同步函数或同步代码块也可以实现同步
一个类的多个方法中加入synchronized
监视器,怎样建一个同步监视器
多线程同步的问题:
什么是线程安全,同步代码块,同步函数,代码和函数间的同步,死锁问题
线程间的通信:
wait告诉当前线程放弃监视器并进入睡眠状态直到其他线程进入同一个监视器调用notify为止。
notify:唤醒同一对象监视器中调用wait的第一线程。用于类似饭馆有一个座位后,通知所有等候就餐的顾客中的第一位可以入坐的情况
notifyAll:唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的线程被唤醒并执行
线程生命的控制:android培训、java培训、期待与您交流! ----------------------
- 黑马程序员 多线程
- 黑马程序员:多线程
- 黑马程序员-java多线程
- 黑马程序员--java 多线程
- 黑马程序员_java多线程
- 黑马程序员-java多线程
- 黑马程序员_多线程
- 黑马程序员 多线程
- 黑马程序员_JAVA多线程
- 黑马程序员—多线程
- 黑马程序员- 多线程
- 黑马程序员_多线程
- 黑马程序员--多线程
- 黑马程序员_多线程
- 黑马程序员--Java多线程
- 黑马程序员---多线程
- 黑马程序员__多线程
- 黑马程序员_多线程
- Three20软件引擎之结合第三方FMDB框架操作数据库详解(四)
- 性能测试总结之内存泄露和内存溢出
- HTML 小知识
- hibernate xml配置 sql server的function
- SFSD
- 黑马程序员----多线程
- CXVXV
- 为什么微软WP7推出那么慢?或者说为什么Android推出那么快!
- xampp
- 第五周实验报告4
- iOS: Some issues about push notification
- 字符串拼接代码中诡异的for循环和诡异的return
- 恶魔岛
- 黑马程序员--java api