进程与线程

进程是正在执行的程序,每一个进程执行都有一个执行的顺序,该顺序就是一个执行路径,或者一个控制单元,启动分配内存空间,进程定义表示空间封装里面的控制单元,线程是进程中的真正执行部分,一个独立的控制单元,线程控制着进程的执行,一个进程至少包含一个线程。

cpu对进程的执行如下图



java api中存在了一个现成的thread,如果我们生成新的线程也可以继承该thread那么我们就得到了新的线程类

class Demo extennds Thread{
 public void run(){
 System.out.println(“Demo run”)
}
}

我们得到了一个新的线程类,那么利用该新的线程类我们便可以创建一个实体线程对象
class ThreadDemo{
  public static void main(String [] args)
{
  Demo d=new Demo();
  p.start();//虚拟机调用该线程的run方法  1、启动线程(执行)  2、(执行谁?)调run方法
}
}


main线程与Demo线程交替运行的代码示例
package execisetest;
class Demo extends Thread{
 public void run(){
  for(int i=0;i<60;i++){
   System.out.println("demo run");
  }
 }

}
public class DemoThread{
 public static void main(String [] args){
  Demo d=new Demo();
  d.start();
  for(int i=0;i<60;i++){
   System.out.println("hello word");
  }
 }
}

每次运行结果不同,多个线程都在获取cpu的执行权,谁得到谁就运行。cpu在做着快速切换,已达到看上去同时运行的效果。

为什么覆盖run方法?
Thread类描述线程,run方法存储要运行的代码,开启线程是为了执行某些代码,但是每个线程要运行的代码不一样,所有run方法也不一样。

 

如果将d.start()改为d.run()则并不会开启线程,虽然已经创建了线程,这样的调用和普通调用一样,而不是多线程同时运行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值