Java并发编程-创建线程的两种方式及区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java并发编程-创建线程的两种方式及区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1972字,纯文字阅读大概需要3分钟。
内容图文
![Java并发编程-创建线程的两种方式及区别](/upload/InfoBanner/zyjiaocheng/1101/e58e6560da9742fda162ec9ef41a1674.jpg)
转载请注明:http://blog.csdn.net/UniKylin/article/details/45016117
1.线程和进程的区别
并行:是多个任务在同一时间同时执行,例如多核计算机同时计算的任务可以理解为并行
并发:从微观上看是多个任务抢占一个CPU从而执行自己的任务,轮流执行任务,但是如果遇到资源冲突的时候并没有从根本提高执行效率。但是提高了CPU的使用效率。
前段时间在GitHub上的一幅图可以很好的阐述上面的概念非常形象
2.Java中创建线程的两种方式
1.第一种方式:直接继承Thread:
public
class
Dog
extends
Thread {
// 私有变量
private
int number;
// 初始化乘法表上限数字publicDog(int number) {
this.number = number;
}
//重写逻辑方法@Overridepublicvoidrun() {
// 打印乘法表for (int i = 1; i <= number; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
System.out.println();
}
}
publicstaticvoidmain(String[] args) {
Dog dog = new Dog(9);
dog.start();//启动线程打印乘法表
}
}
2.第二种方式:实现Runnable接口的方式
public
class
Cat
implements
Runnable {
private
int number;
publicCat(int number) {
this.number = number;
}
//重写逻辑方法@Overridepublicvoidrun() {
System.out.println("Current Thread :" + Thread.currentThread());
for (int i = 0; i <= number; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(i + " * " + j + " = " + i * j + "\t");
}
System.out.println();
}
}
publicstaticvoidmain(String[] args) {
Thread task = new Thread(new Cat(9));
task.start();
}
}
对比以上两种方式可以发现:第一种方式继承Thread不能再继承其他父类,所以对于程序的扩展性不是很友好,但是可以通过this访问当前线程的信息。第二种方式继承Runnable
接口,从设计角度来看比较灵活,Java是不支持多继承但是支持实现多个接口,这样就可以将这个缺点给克服了,如果要访问线程信息需要使用Thread.currentThread();
方法。
3.源码分析
public
class
Thread
implements
Runnable {
//关联Runnable接口
private Runnable target;
//线程逻辑方法publicvoidrun() {
if (target != null) {
target.run();
}
}
}
//线程接口publicinterfaceRunnable {//定义抽象的线程逻辑方法,publicabstractvoidrun();
}
上面的Thread类和Runnable接口是Java JDK中两个最重要的核心部分,继承Thread属于对JDK本身的系统类的扩展,而实现Runnable接口的方式属于实现一种标准。不管哪种方式JVM启动线程的过程中都将他们进行装载,只不过方式不一样而已。具体哪种方法比较好,当然第二种方式从设计方面比较优雅和灵活。
原文:http://blog.csdn.net/unikylin/article/details/45016117
内容总结
以上是互联网集市为您收集整理的Java并发编程-创建线程的两种方式及区别全部内容,希望文章能够帮你解决Java并发编程-创建线程的两种方式及区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。