进程和线程 java程序运行的原理 线程创建的方式

   

/*

进程和线程:

        1.一个进程对应一个应用程序

                eg.windows 启动 word. windows 启动 jvm .就是启动了一个进程。现代的计算机都支持多进程。

                就是同一个操作系统中,同时启动多个进程

                  

                多进程有什么作用:

                        单进程计算机只能做一件事情。

                          

                        玩电脑:打游戏 (游戏进程)听音乐(音乐进程)

                        对于单核计算机,同一时间上,游戏,和音乐,不是同时进行的,因为cpu某个时间点上只能做一件事情。

                        游戏,和音乐,频繁的切换速度极快,给人一种同时进行的错觉。

                          

                        多进程的作用不是提高执行速率,而是提高cpu的使用率

                          

                        进程和进程直接的内存之间是独立的。

                          

        2.多线程

                线程:是一个进程中的一个场景。一个进程可以启动多个线程

                  

                多线程不是为了提高速度,而是为了提高应用程序的使用率

                  

                线程和线程共享 堆内存,和方法区内存,栈内存是独立的,一个线程一个栈

                  

        3.java 程序的运行原理

                java 命令会启动 java 虚拟机,启动 jvm,等于启动了一个应用程序,表示启动了一个进程。

                该进程会自动启动一个"主线程",然后主线程,去调用某个类中的main()方法,所以main() 方法运行在

                主线程中。之前所有程序都是单线程的。

   

   

                  

java 语言中实现线程的方式:

        1.继承 java.lang.Thread 重写 run方法。

          

        2.java 中实现线程的另一种方式:

                1.实现 runable 接口;

                2.实现runable 接口中的 run方法;

          

*/

   

方法一:

   

public class ThreadLineTest01 {

public static void main(String[] args) {

//创建

Thread t=new Processor();

//启动

t.start();//这段代码执行瞬间结束,告诉jvm 再分配一个新的栈给 t线程

//run() 不需要程序员手动调用

//t.run();//这是普通方法调用,这样之后程序还是只有一个线程。run方法结束之后,下面的才能执行。

//在主线程中执行

for(int i=0;i<100;i++){

System.out.println("main-->"+"i");

}

   

//有了多线程之后,main 方法结束,是主线程中没有方法栈帧

//但是其他线程栈中可能还有栈帧

//所以可以得出结论,就是,main方法结束,可能程序还没有结束执行。

}

   

}

   

class Processor extends Thread{

   

public void run(){

for(int i=0;i<100;i++){

System.out.println("run"+"-->"+i);

}

   

}

}

   

   

   

   

方法二:

   

public class ThreadTest02 {

public static void main(String[] args){

// 创建线程:

Thread t=new Thread(new Processor1());

   

//启动

t.start();

   

}

}

   

//推荐使用 实runable 接口这个方式,因为,这样它的可扩展能力较强。一个类,实现接口之外,还保留了类的继承

class Processor1 implements Runnable{

   

@Override

public void run() {

for(int i=0;i<1000;i++){

System.out.println("run-->+"+i);

}

   

}

   

}

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值