栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

谈谈对java线程的认识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

谈谈对java线程的认识

线程在java的API层面的体现:线程对象本身、线程需要执行的任务(指令流的集合或者栈帧)
1.线程对象本身:java是面向对象的高级语言,即使对象不是能看见或者能摸着的物体,而是一种抽象的概念或者过程,都能用java的OOP思想将其封装为一个对象,线程正是这样一种抽象的存在。
2.线程需要执行的任务:学过设计模式的都知道,java对组合复用的推崇是超过通过继承的。所以将线程需要执行的任务也抽取出来,用Runnable表示线程的任务,也看作一种对象。这样设计的好处就是将线程对象本身 和 它需要执行的任务分离开来,达到更灵活的复用目的。比如很多个线程对象 都可以 并发地执行同意一个任务对象(多个Thread对象+单个Runnable的实现类的实例 ,亦或者多个Thread对象+单个Callable接口的实现类的实例)。但是如果直接new一个Thread对象并重写其任务方法run,这时线程对象和线程任务对象的联系就要比前两种要紧密得多。这时启动线程的方法就多了啊!!!! 请看下面代码…

package threadpart;

public class TaskInThread {
	public static void main(String[] args) {
		Thread task = new Thread("t0") {
			@Override
			public void run() {
				System.out.println(Thread.currentThread().getName()+" task in thread itself!!");
			}
		};
		task.start();//直接启动线程
		new Thread(task, "t1").start();//只把task当作线程任务,创建一个新线程对象来启动线程
	}
}

执行结果:

t0 task in thread itself!!
t1 task in thread itself!!
或者:
t1 task in thread itself!!
t0 task in thread itself!!

你会发现,这样创建线程和任务,task对象的启动方式就不唯一了。但如果不希望使用task.start()这种启动方式,又何必将任务放在一个线程对象内部呢???这不是使任务在主观和客观上都显得很累赘吗?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号