Java 多线程(Thread)学习
多线程:就是进程的扩展,实现并发。一个进程可以包含多个线程,进程一般是由操作系统控制,而线程就是由程序员控制的,所以作为编程人员做好线程是我们的重点。
线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
进程是操作系统同时执行多个任务,其实也不是同时执行,就是把多个任务分成就绪、运行-->就绪、运行切换,CPU执行速度太快,所以感觉是同时执行。
多线程是指在同一程序中有多个顺序流在执行,从而实现并发性。
创建线程有两种方法:继承Thread;实现Runnable接口;通过匿名内部类实现Runnable接口
1.继承Thread,然后重写run()方法,再然后就是启动线程.start().
Class Thread1 extends Thread{
@Override
public void run() {}
}
2.实现Runnable接口,然后重写run()方法,再然后就是启动线程.start().
Class Thread2 implements Runnable{
@Override
public void run() {}
} Thread2 th=new Thread2();
Thread th1=new Thread(th);//创建线程对象
th1.start();//启动线程
3.通过匿名内部类实现Runnable接口,然后在匿名内部类中重写run()方法,再然后就是启动线程.start().
Thread th=new Thread(new Runnable(){
@Override
public void run() {}
});
线程休眠
Thread.sleep(500);//500表示500毫秒
Thread.currentThread().getName()//获得线程默认的名字
Thread.currentThread().SetName("th1")//设置线程名
Thread和Runnable的区别
1.如果一个类继承Thread,则不适合资源共享。但是如果实现了Runnable接口的话,则很容易的实现资源共享。
继承Thread 创建的对象是单独的线程,而实现Runnable其实是同一个线程。
2.实现Runnable接口比继承Thread类的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
为了不让同一个对象不被多个线程同时访问,引入锁的概念(Synchronized),加锁之后当这个对象被线程1访问就会上锁,之后的线程想访问只能等线程1访问结束。引入锁保证了安全性。
最新文章
- 七个结构模式之代理模式(Proxy Pattern)
- view和activity的区别
- Coursera台大机器学习课程笔记13 -- Regularization
- UVa 839 天平
- ASP.NET中JSON的序列化和反序列化
- 《白手起家Win32SDK应用程序》(完整版+目录)
- 挖一下插件v1.5版本发布
- Phone APP设计规范/iPad APP设计规范/Android APP设计规范/网页设计规范
- 你应该学会的Postman用法
- ThinkPHP删除栏目(单)
- mysql命名规范
- python学习心得--编码格式篇
- 使用chcache 缓存
- 2017-2018-2 20165237 实验四《Android开发基础》实验报告
- Accumulator<;Long>; implements of JavaSparkContext in Spark1.x
- oem 重建
- collection my favoriate websites
- JDK10 新特性
- MySQL把一个大表拆分多个表后,如何解决跨表查询效率问题
- 【LOJ】#2077. 「JSOI2016」飞机调度
热门文章
- 旧文备份: CANopen的LSS子协议中文翻译
- git(osChina上分支的使用)
- dubbo 与Spring Cloud 对比
- JS - 把类似document.querySelectorAll(";.xxx";)、document.getElementsByName(";xxx";)这种方法的返回结果转换成数组对象
- Shell学习——Shell分类:登录shell和非登陆shell 交互shell和非交互shell
- TP5 行为Behavior用法说明
- 改进的平台设备驱动——dev和drv完全分离
- PLY手册翻译
- HDU 2222 AC自动机(模版题)
- linux-shell——04