文档章节

线程02

穿山
 穿山
发布于 2017/07/14 22:15
字数 642
阅读 2
收藏 0

线程中有几个方法需要我们区分

1 sleep方法是表示线程执行到这的时候只是暂时处于“睡眠”状态,在这种状态下线程是不会释放CPU资源的,当到达休眠时间后,线程继续“起来”干活。当线程处于sleep状态时别的线程不可以访问被锁定的对象。

2 yield方法指的是该线程暂时释放出CPU资源把CPU资源让给其他线程,它重回就绪状态等待CPU分配给相应的CPU时间片给它然后再执行。

3 wait方法指线程进入等待状态,此时别的线程可以访问被锁定的对象,当线程处于wait状态时,只有调用notify方法才能将线程“唤醒”让该线程重新进入就绪状态。

线程的同步一般有两种一种是同步代码块,同步代码块后面有个括号,里面可以选择是同步对象还是同步类字节码。当你同步的方法中有static修饰的时候那么锁的是字节码。同步普通方法的话是当前对象,同步静态方法的话是同步的类字节码。静态变量是这个类初始化的时候,静态变量已经帮你初始化好,并且放到静态区了,你实例化出来的对象的静态变量都指向静态区中的那个静态变量的地址值。

所以当我们使用线程同步时,要明确锁的资源,到底是锁字节码还是锁对象。如果同时锁一个资源那就是互斥了。

线程只能start一次,再次启动时会报异常 IllegalThreadStateException。

JVM就是多线程的,主方法是个线程,垃圾回收也是个线程。

启动多线程的话有有三种方法

1 设计一个Thread子类并重写其run方法,实例化这个子类,并且使用这个类的start方法。

2 设计一个测试类实现runable接口,并在这个类中重写run方法,实例化一个线程把测试类当作构造参数,来构造一个新的Thread类。

3 使用匿名类,继承Thread,重写run方法,直接在run方法中写业务代码。匿名类的一个好处是可以很方便的访问外部的局部变量。前提是外部的局部变量需要被声明为final。(JDK7以后就不需要了)

© 著作权归作者所有

上一篇: 六大设计模式
下一篇: 浅谈IO流
穿山
粉丝 9
博文 33
码字总数 18655
作品 0
南京
私信 提问
iOS 多线程:『GCD』详尽总结

原文链接:https://www.jianshu.com/p/2d57c72016c6 感谢大家对这篇文章的喜欢和支持。为了不辜负大家的喜欢,也为了更好的让大家了解 iOS 多线程,以及 GCD 的相关知识,我对这篇文章进行了...

_小迷糊
2018/12/12
0
0
android基础知识02——线程安全4:HandlerThread

android的UI操作不是线程安全的,同时也只有主线程才能够操作UI,同时主线程对于UI操作有一定的时间限制(最长5秒)。为了能够做一些比较耗时的操作(比如下载、打开大文件等),android提供...

迷途d书童
2012/03/23
420
0
iOS多线程:『GCD』详尽总结(二):GCD 的基本使用

同步执行 + 并发队列 输出结果: 输出结果: 2018-02-23 20:34:55.095932+0800 YSC-GCD-demo[19892:4996930] currentThread---{number = 1, name = main} 2018-02-23 20:34:55.096086+0800 YS......

Python雁横
2018/05/23
0
0
StrictMode 使用

从Android 2.3开始提供了一个新的类StrictMode,该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、网络访问或函数调用,可以帮助开发者改进程序,使主线程处理UI和动画在磁盘读写和网络操...

长平狐
2012/10/09
158
0
Java concurrent包介绍及使用

一、concurrent包简介 前面一个系列的文章都在围绕hash展开,今天准备先说下concurrent包,这个系列可能会以使用场景说明为主,concurrent包本身的代码分析可能比较少; 我在这方面的实践经验...

李景枫
2016/06/09
597
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL参数search_path影响及作用

search_path稍微熟悉PG就会用到,用法这里就不必讲,本篇主要讲它在程序里怎样处理。 1、GUC参数定义 这是个 config_string 参数 {{"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT,...

有理想的猪
56分钟前
8
0
Qt程序各个平台打包发布及安装程序大全

本文链接:https://blog.csdn.net/zhengtianzuo06/article/details/78468111 通用: 1.准备图标 图标可以直接使用一般格式的图片制作, 比如jpg, png等 推荐使用Photoshop制作原始图 推荐使用I...

shzwork
今天
4
0
springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
22
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
10
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部