java 线程 操作_java多线程操作

进程是程序的一次动态的执行过程,它经历了从代码加载、执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。

多线程是实现并发机制的一种有效的手段。进程和线程一样,都是实现并发的一个基本单位。

如果现在同时运行多个任务,则所有的系统资源将是共享的,补所有线程所公用,但是程序处理需要CPU,传统的单核CPU来说 ,在同一个时间段上会有多个程序执行,但是在同一个时间点上只能存在一个程序运行,也就是说,所有的程序都要抢占CPU资源。

但是现在的CPU已经发展到多核状态了,在一个电脑上可能会存在多个CPU,那么这个时候就可以非常清楚的发现多线程操作间是如何并发执行的,那么本机的CPU是双核的。

JAVA的多线程实现

两种方式实现多线程:

1)继承Thread类

2)实现Runnable接口

继承Thread类

Thread类是在java.lang包中定义的,一个类只要继承了Thread类,此类就称为多线程操作类。在Thread子类之中,必须明确的复写Thread类中的run()方法,此方法为线程的主体。

class 类名称 extendsThread{

属性...;

方法...;//复写Thread类中的run()方法,此方法为线程主体

public voidrun(){

线程主体;

}

}

java.lang 包含在程序运行时自动导入,所以无需手工编写import语句。

一个类继承了Thread类之后,那么此类就具备了多线程的操作功能。

class Mythread1 extendsThread{privateString name;publicMythread1(String name){this.name=name;

}public voidrun(){for(int i=0; i<10;i++){

System.out.println(name+ "运行,i="+i);

}

}

}

启动线程必须使用Thread类中定义的start()方法,一旦调用start()方法,实际最终调用的是run()方法。

class Mythread1 extendsThread{privateString name;publicMythread1(String name){this.name=name;

}public voidrun(){for(int i=0; i<10;i++){

System.out.println(name+ "运行,i="+i);

}

}

}public classMythread {/***@paramargs*/

public static voidmain(String[] args) {//TODO Auto-generated method stub

Mythread1 mt1=new Mythread1("线程A");

Mythread1 mt2=new Mythread1("线程B");

mt1.start();

mt2.start();

}

}

77e35b18b990e59cdedf3d190cacc6fa.png

同一个对象多次调用start()方法,会抛出:

实现Runnable接口

class Mythread1 implementsRunnable {privateString name;publicMythread1(String name){this.name=name;

}public voidrun(){for(int i=0; i<10;i++){

System.out.println(name+ "运行,i="+i);

}

}

}public classMyThread {/***@paramargs*/

public static voidmain(String[] args) {//TODO Auto-generated method stub

Mythread1 mt1=new Mythread1("线程A");newThread(mt1).start();

}

}

两种实现方式的区别

对于Thread类和Runnable接口本身都是可以进行多线程的实现,那么两都到底使用区别。

1)继承局限:使用Runnable接口可以避免单继承的局限,而Thread类有此局限。

2)资源共享:使用Runnable接口可以实现多线程资源的共享,而Thread类却无法实现。

Thread 类定义 :public class Thread extends Object implements Runnable

发现Thread类实际上是Runnable的子类。而且Thread类也要去接收Runnable其他子类对象,而且所有的线程中,通过Runnable接口实现的线程类里面都是编写的具体功能,而并没有所谓的CPU调度,而真正意义的CPU调度由操作系统完成(通过Thread类的start()方法调用的)。

Thread类要去协调操作系统,并且最终还要执行具体的纯种主体的方法,而线程的主体呢,现在只专著于具体的功能实现,至于如何调度根本不管。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值