------- android培训、java培训、期待与您交流! ----------
黑马程序员——线程
概念:(CPU在瞬间不断切换去处理各个线程)
进程:指一个内存中运行的应用程序
线程:指在同一个进程中同时运行的多个任务。
进程与线程的区别:
<!--[if !supportLists]-->1、<!--[endif]-->进程有独立的进程空间,进程中的数据存放空间(堆内存和栈内存)是独立的。
<!--[if !supportLists]-->2、<!--[endif]-->线程的堆内存是共享的,栈内存是独立的,线程消耗的资源也比进程小,相互之间可以相互影响。
创建线程的两种方式:
<!--[if !supportLists]-->1、<!--[endif]-->继承Thread类,覆写run()方法,创建子类对象的同时线程也被创建
通过调用start()方法开启线程。
<!--[if !supportLists]-->2、<!--[endif]-->实现Runnable接口,覆盖接口中的run()方法,
通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数,最后Thread类对象调用start()方法开启线程。
(Thread类中的run()与start()方法的区别:
run():在本线程内调用该Runnable对象的run()方法,可以重复多次使用。
Start():启动一个线程,调用该Runnable()对象的run()方法,不能多次启动一个线程。)
两种创建方式的比较:
继承thread类:简单,不能再继承其他类,同资源不能共享。
实现Runnable接口:多线程共享一个目标资源,适合多线程处理同一份资源。
还可以继承其他类,也可以实现其他接口。
控制线程:
join()方法:调用join方法的线程对象强制运行,该线程强制运行期间,其他线程无法运行,必须等到该线程结束其他线程才可以运行。
Daemon:后台线程,处于后台运行,任务是为其他线程提供服务,也称为”守护线程“或”精灵线程“,JVM的垃圾回收就是典型的后台线程。
Sleep线程休眠:然执行的线程暂停一段时间,进入阻塞状态
控制线程优先级:setPriority()MAX_PRIORITY 10 MIN_PRIORITY 1 NORM_PRIORITY 5;
Yield线程礼让:暂停当前正在执行的线程对象,并执行其他线程。
(Thread的静态方法,可以是当时的线程暂停,但不会阻塞该线程,而是进入就绪状态,所以完全有可能:某个线程调用了yield()之后,线程调度器又把他调度出来重新执行。)
多线程安全问题:
原因:当多条语句在操作同一个线程共享数据是,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。
解决方法:同步代码快,同步方法,同步锁
关键字:wait():让当前线程放弃监视器进入等待,知道其他线程调用同一个监视器并调用notify()或notifyAll()为止。
Notify()唤醒同一个对象监视器中调用wait()方法的第一个线程。
notifyAll():唤醒在同一个对象监视器中调用wait()方法的所有线程。
Condition对象:
Condition对象通过Lock对象的newCondition()方法创建,
Await(),sigal(),signalAll()
相关推荐
Java 语法总结——线程Java 语法总结——线程Java 语法总结——线程Java 语法总结——线程
NULL 博文链接:https://lvwenwen.iteye.com/blog/1470696
day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、序列化流、Files day11_网络编程 day12_函数式接口 day13_Stream...
Java面试之——线程编程方面.docJava面试之——线程编程方面.docJava面试之——线程编程方面.docJava面试之——线程编程方面.doc
多线程编程之三——线程间通讯
含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,
多线程编程之四——线程的同步
当一个进程中线程有多个时,是多线程。 为什么要用多线程 1,让计算机"同时"做多件事情,节约时间。 2,后台运行程序,提高程序的运行效率.。 3,多线程可以让程序"同时"处理多个事情。 4,...
1、 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JRE(Java Runtime Environment,Java 运行时环境),它相当于操作系统部分,提供了 Java 程序运 行时所需要的基本条件和许多 Java ...
\linux下c语言编程1-18\Linux下C语言编——线程.doc
多线程编程之四——线程的同步 到此介绍 要源代码的给我留言哈或邮箱storyxiao@163.com
c++多线程编程之四——线程的同步.pdf
《Unix环境高级编程》第十二章——线程控制PPT
多线程编程之四——线程的同步-VC知识库文章[归纳].pdf
NULL 博文链接:https://huangminwen.iteye.com/blog/1157983
Java面试之——线程编程方面[借鉴].pdf