文档章节

学习笔记4:java中Thread类的方法小结

牧羊人Berg
 牧羊人Berg
发布于 2015/10/16 10:59
字数 597
阅读 53
收藏 3
点赞 0
评论 2

稍稍对Thread类中的常用方法简单地做了一次总结,加深点印象。  

仍然还是采用继承Thread类的案例来实现创建线程的方式 , 附代码段: 

/*
 * @auto: 牧羊的伯格女皇
 * 2015-10-16
 * Thread的常用方法稍微总结:
 * 1. start() 启动线程并执行相应的run()方法
 * 2. run()  子线程要执行的代码放入run()方法中
 * 3. currentThread() 静态的, 调取当前的线程,即返回对当前正在执行的线程对象的引用。
 * 4. getName(): 获取此线程的名字
 * 5. setName(): 设置此线程的名字
 * 6. yield()  : 暂停当前正在执行的线程对象,并执行其他线程。即调用此方法的线程释放对当前CPU的占用权,退让使用权。
 * 7. join() :等待该线程终止。即在A线程中调用B线程的join()方法,表示当执行到此方法,A线程停止执行,直至B线程执行完毕,
 * 				A线程再接着join()之后的代码执行
 * 8. isAlive() : 判断当前线程是否还存活 ,布尔值,如果是死亡状态返回false
 * 9. sleep(long m) 显示的让当前线程睡眠 m 毫秒 记住:被重写的方法不能比父类抛更大的异常。
 * 10. 线程通信中的三个方法: wait()  notify()   notifyAll() 
 * 
 * 11. 设置线程的优先级:高优先级线程先抢占cpu 
 * 		       getProority(): 返回线程优先值
 * 		       setProority(int newProority) : 改变线程的优先级
 * */
 
 
class SubThread extends Thread {
	@Override
	public void run() {
		for( int i=0; i<=100; i++ ){
			try {
				// 被重写的方法不能比父类抛出更大的异常 。 所以只能try-catch
				Thread.currentThread().sleep( 1000 );
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println( Thread.currentThread().getName() +": " + Thread.currentThread().getPriority() +": " + i );
		}
	}
	
}

class TestThread{
	public static void main(String[] args) {  //隐含的主线程
		Thread.currentThread().setName("==========main主线程"); // 给主线程设置线程名称
		SubThread st = new SubThread();
		st.setName("  子线程");  // 给子线程设置名称
		st.setPriority( Thread.MAX_PRIORITY );  // 设置子线程为最高优先级 ,  10   默认为5  最小为 1 
		st.start();
		for( int i=0; i<=100; i++ ){
			System.out.println( Thread.currentThread().getName() +": " + Thread.currentThread().getPriority() +": " + i );
//			if( i % 10 == 0 ){
//				System.out.println("暂停主线程,执行子线程:");
//				Thread.currentThread().yield();
//			}
			
			/*
			if( i == 30 ){
				System.out.println("开始暂停主线程,并执行子线程:");
				try {
					st.join();
					System.out.println("等待子线程执行完毕,再接着执行主线程:");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			*/
		}
		System.out.println("查看子线程st是否还存活:  " + st.isAlive() );
	}
}




© 著作权归作者所有

共有 人打赏支持
牧羊人Berg
粉丝 23
博文 96
码字总数 87512
作品 0
深圳
加载中

评论(2)

牧羊人Berg
牧羊人Berg

引用来自“抽象派”的评论

实际用的话,线程同步都是通过锁来实现的,尽量避免线程通信,实在要通信的话也是使用消息队列。
还有个比较常用的是,Thread.sleep(1)和setDaemon(true)。

嗯嗯,受教了。 至于线程同步,锁,消息队列等方面内容我还没看。
_wxyz
_wxyz
实际用的话,线程同步都是通过锁来实现的,尽量避免线程通信,实在要通信的话也是使用消息队列。
还有个比较常用的是,Thread.sleep(1)和setDaemon(true)。
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
读书笔记之《Java并发编程的艺术》-线程池和Executor的子孙们

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
[转]理解ThreadLocal

ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Th...

inferrrrrr
2009/11/03
0
0
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
8
转:理解ThreadLocal

ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Th...

轮回今生
2012/10/26
0
0
多线程——彻底理解ThreadLocal

ThreadLocal是什么   早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。...

亚特兰缇斯
2015/03/16
0
0
Java多线程(全)学习笔记(下)

七.Callable和Future接口 C#可以把任意方法包装成线程执行体,包括那些有返回值的方法。Java也从jdk1.5开始,加入了Callable接口用来扩展Runnable接口的功能,Callable接口提供一个call()...

明舞
2014/07/27
0
0
深入理解ThreadLocal

学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到底有什么用,然后再来看看它的实现原理。 ThreadLocal如果单纯从名字上来看像是“本地...

凯奥斯
2013/08/02
0
6
threadlocal原理分析

简介 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。当使用ThreadLocal...

mrliuze
2015/08/11
0
0
JVM 运行时数据区简介及堆与栈的区别

理解JVM运行时的数据区是Java编程中的进阶部分。我们在开发中都遇到过一个很头疼的问题就是OutOfMemoryError(内存溢出错误),但是如果我们了解JVM的内部实现和其运行时的数据区的工作机制,...

大数据之路
2015/08/02
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CentOS “Destination Host Unreachable”问题解决办法

挑战极速安装CentOS时遇到局域网主机不能通信的情况: [root@zjd network-scripts]# ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=......

wffger
8分钟前
0
0
CentoOS6.6安装netcat

CentOS下安装netcat 使用zookeeper过程中,需要监控集群状态。在使用四字命令时(echo conf | nc localhost 2181),报出如下错误:-bash: netcat: command not found。 我的系统是CentOS 6....

ghou-靠墙哭
19分钟前
0
0
es6之解构赋值巧用

ES6 允许按照一定模式,从数组、对象等中提取值,对变量进行赋值,这被称为解构赋值。 如何进行解构赋值我这里就不赘述,本篇文章主要是将解构赋值的巧妙使用之处。 1、交互变量的值 常用交互...

秋季长青
24分钟前
0
0
Elasitcsearch High Level Rest Client学习笔记(三)批量api

Bulk Request BulkRequest可以在一起从请求执行批量添加、更新和删除,至少需要添加一个操作 BulkRequest request = new BulkRequest(); //创建BulkRequestrequest.add(new IndexRequest("...

木子SMZ
28分钟前
0
0
mybatis-dynamic sql

OGNL expressions if 判断是否存在值 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{tit......

writeademo
35分钟前
0
0
社交系统ThinkSNS+ V1.8.3更新播报

     研发发布版本号:1.8.3   本次版本于2018年7月16日发布   本次发布类型:新增功能、细节调整与优化   社交系统ThinkSNSPlus更新体验:请于官网下载/安装最新版或联系QQ35159...

ThinkSNS账号
38分钟前
0
0
教育思考:选择编程是一场父母和孩子的和解[图]

教育思考:选择编程是一场父母和孩子的和解[图]: 之前有个很热的段子是这样讲的:深夜十点的时候,某小区一女子大声喊叫“什么关系?啊?!到底什么关系?你说!”最后发现原来是一位妈妈陪...

原创小博客
39分钟前
0
0
X64汇编之指令格式解析

最近由于项目组内要做特征码搜索的东西,便于去Hook一些未导出函数,你懂得...于是就闲着学习了一下x86/x64的汇编指令格式。x86的汇编指令格式请参照http://bbs.pediy.com/showthread.php?t...

simpower
42分钟前
0
0
rust 语法概要(只适合不熟悉时快速查阅使用,不适合理解其精髓。未完待续)

注意:本内容只适合快查,不适合理解精髓。精髓请研读 https://kaisery.github.io/trpl-zh-cn/foreword.html 基本数据类型 i8,i16,i32,i64,i128 u8,u16,u32,u64,u128 f32,f64 char bool:true...

捍卫机密
45分钟前
0
0
JS中严格模式和非严格模式

1,使用 严格模式的使用很简单,只有在代码首部加入字符串 "use strict"。必须在首部即首部指其前面没有任何有效js代码除注释,否则无效 2.注意事项 (1)不使用var声明变量严格模式中将不通...

AndyZhouX
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部