- 1
- 0
- 约2.49千字
- 约 30页
- 2017-12-26 发布于河北
- 举报
java基础(七)
synchronized 在java中使用synchronized实现同步 synchronized获得对象锁 Synchronized会降低程序的性能 实现同步有两种方法 同步代码块 --SynThreadBlock.java 同步函数 --SynThreadMethod.java 线程四种状态之间的转换 再来理解一遍: 新 等待/阻塞 死 运行 可运行 线程之间的关系 线程之间让步关系 join() yield() 线程之间的交互 wait() notify() notifyAll() join 某个线程加到另一个线程的”尾部”,当该线程执行完后另一个线程再继续执行.类似又变成了单线程. thread.join();//如果在主线程中调用,就相当于把thread线程加到了主线程后,主线程会等待该线程结束后继续运行。 JoinTest.java yield 当前运行的线程暂时退出运行状态,回到可运行状态,使同级别的线程有机会执行 但yield不能保证任何事情 Thread.yield(); --YieldTest.java 线程之间的交互 主要涉及到的方法 wait() notify() notifyAll() wait相关知识点 调用wait必须拥有对象上的锁 wait可以释放锁 可以调用别的Thread的wait方法 wait和notify必须要成对出现 wait实例 看一个程序 waitTest.java 专题—继承Thread和实现Runnable的比较 当extends Thread后就不能在继承其他的类了 实现Runnable后还可以extends别的类并实现其他的接口 extends Thread后具有多个对象的实例implements Runnable 具有单个对象的实例 小结 现在我们应该可以: 了解多线程的概念 可以编程定义和实例化和启动线程 可以说出sleep的作用和知识点 知道实现同步有两种方式 编程实现同步代码来保护资源(synchronized) 线程间的让步和交互 可以说出线程的各个状态之间的转换关系 可以说出继承Thread和实现Runnable的区别并编写代码进行体现 了解wait的相关知识点 L o g o Java 多线程 讲师:温春水 中软培训中心 邮件:wenchsh@ 内容概述 了解什么是进程和线程 如何创建线程 启动线程 Run(); Start(); Sleep 同步代码 在单位时间内只有一个线程执行 线程间的让步关系 sleep Join yield 内容概述 线程间的交互 wait Notify notifyAll 邮件的发送与处理 其中一个线程发送完邮件后通知另外的线程处理邮件 了解线程的4个状态之间的转换关系 专题 继承Thread和和实现Runnable的比较 本章目标 学完以后我们应该可以: 了解什么是线程 编程定义线程 编程实例化线程 知道如何启动线程 会使用同步代码来保护资源 了解如何实现线程间的交互 说出线程的4个状态之间的转换关系 多线程 什么是多进程 每个独立运行的程序 多线程的特点 理解进程和线程之间的关系 多线程 单线程和多线程的区别 参看程序 如何定义线程 继承java.lang.Thread 特点:不能再次扩展其他类 用的较少 实现:java.lang.Runnable 用得较多 无论是继承Thread类还是实现Runnable接口 都需要实现run()方法. 继承java.lang.Thread 先看一个继承Thread的实例: Public class MyThread extends Thread{ Public void run(){ System.out.println(); } } 实现Runnable 再看一个实现Runnable的实例: public class MyRunnable implements Runnable{ public void run(){ System.out.println(); } } 实例化线程 继承Thread方式的实例化 写实例 实现Runnable方式的实例化 写实例 New Thread(); run Run可理解为是多线程的入口函数 Run方法执行完后该线程也就执行完了 多线程的业务逻辑都写在run里 写一个基本的多线程实例 启动线程 调用线程的start()方法. 线程的结束 多数情况下不会干预线程的结束 但是如果停止一个线程怎么办呢? Thread类中带的线程停止的函数已经不推荐使用了 一般情况下是设置标识变量来控制 --StopThreadTest.java 线程四种状态之间的转换 状态转换 新 等待
原创力文档

文档评论(0)