java多线程三种方式区别,java多线程,线程同步方式,线程同步加锁的方法,wait与sleep区别
2015-11-21 19:21
609 查看
java多线程三种方式区别
1)实现Runnable接口
定义线程类,实现Runnable接口,重写其public void run(),将此类的对象当做Thread类的构造函数中的参数
所有子线程公用一套run中代码
2)继承Thread类
所有子线程各有一套自己的run代码
3)使用ExecutorService,Callable,Future实现有返回结果的多线程
java多线程
1)进程是资源分配的最小单位,线程是处理机调度执行的最小单位;不同的进程有各自的逻辑地址,能共享物理地址,而同一进程的线程之间可以
共享部分逻辑地址,即:能共享堆内存,每个线程有自己的线程栈,寄存器,私有数据。
2)多线程的实现方式有:继承Runnable接口、继承Thread类、使用ExecutorService、Callable、Future实现有返回结果的多线程。
3)多线程时要处理线程同步问题,使用加锁的方式同时又要避免死锁的产生。
线程同步方式
互斥锁、读写锁、条件变量、信号量和令牌
线程同步加锁的方法
1)synchronized:修饰方法或修饰代码块
2)lock对象锁:lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直到该Lock对象的unlock()方法被调用。
wait与sleep区别
1)wait是Object类的方法,sleep是Thread类的方法
2)wait时必须有锁且放开,sleep时不一定有锁,有的话不放开
3)wait要靠别人叫醒或打断,sleep自己醒或被打断
1)实现Runnable接口
定义线程类,实现Runnable接口,重写其public void run(),将此类的对象当做Thread类的构造函数中的参数
所有子线程公用一套run中代码
2)继承Thread类
所有子线程各有一套自己的run代码
3)使用ExecutorService,Callable,Future实现有返回结果的多线程
java多线程
1)进程是资源分配的最小单位,线程是处理机调度执行的最小单位;不同的进程有各自的逻辑地址,能共享物理地址,而同一进程的线程之间可以
共享部分逻辑地址,即:能共享堆内存,每个线程有自己的线程栈,寄存器,私有数据。
2)多线程的实现方式有:继承Runnable接口、继承Thread类、使用ExecutorService、Callable、Future实现有返回结果的多线程。
3)多线程时要处理线程同步问题,使用加锁的方式同时又要避免死锁的产生。
线程同步方式
互斥锁、读写锁、条件变量、信号量和令牌
线程同步加锁的方法
1)synchronized:修饰方法或修饰代码块
2)lock对象锁:lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直到该Lock对象的unlock()方法被调用。
wait与sleep区别
1)wait是Object类的方法,sleep是Thread类的方法
2)wait时必须有锁且放开,sleep时不一定有锁,有的话不放开
3)wait要靠别人叫醒或打断,sleep自己醒或被打断
相关文章推荐
- JAVA中的三种遍历方式
- Java垃圾回收参数配置
- JAVA RMI 原理与实现(转)
- windows下Java环境配置
- 【Java小项目】简单的天气预报
- Web框架对比: Wicket vs Struts
- Java——用户名输入框
- JAVA Socket基础例程
- (转载)ajax请求Struts2返回JSON数据方法
- java.lang.IllegalArgumentException: View not attached to window manager
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
- Java中getResourceAsStream的用法
- 慕课网-java 集合框架
- 关于Spring加载classpath与classpath*的过程剖析
- 慕课网--细说java 多线程 thread与runnable的区别
- Eclipse-JAVA开发环境搭建
- java计算1900到2015共有多少天?
- java时间格式问题
- eclipse配置多个git账号
- maven在Eclipse中的使用