标签:构造 关系 class 时间 练习 多个 jvm 一个 out
什么是进程?
例如:
这些每个都是一个进程,每个进程都有好多功能,这些功能同时运行走的就是线程,多线程
一个进程会有多个线程或者一个线程,是一对多的关系
进程:一个程序进入内存就可以叫做进程
线程:线程是进程的一个执行单元(功能),可以多个线程一起执行
程序运行原理
java是抢占式调度,就是cpu会随机分配时间运行哪个线程时间长一点,执行的多一些。cpu会高速的在每个线程之间来回切换,但是某个时刻只能执行一个线程,
多线程并不能提高程序的运行速度,但是可以提高程序的运行效率,让cpu的使用率更高
分时调度:cpu平均分配时间,每个线程的时间是一样的
主线程
就是我们常用的main()方法,当JVM启动后,必然有一个方法从mian方法开始,到结束。才能执行mian下面的别的方法,依次执行。
Treah类
构造方法
常用方法
写一个新的类,然后继承Thread类,声明这是一个新的线程,将要执行的程序写在新的类里面,方法名run,在mian方法里用start调用
1 package com.oracle.Demo02; 2 3 public class Demo1 extends Thread { 4 //JVM去找OS开了2条路径 5 //对于CPU来说就有了2条路径,这2条路径都会被CPU执行,CPU有自己选择的权利,所以就有了随机性, 6 //也可以理解为2个线程在抢夺CPU的资源(时间) 7 public void run(){ 8 for(int i=0;i<100;i++){ 9 System.out.println("这是新建的线程"+i); 10 } 11 } 12 }
1 package com.oracle.Demo02; 2 3 public class test { 4 5 public static void main(String[] args) { 6 Demo1 de = new Demo1(); 7 //开启线程。start方法会在后台调用run方法 8 de.start(); 9 for(int i=0;i<100;i++){ 10 System.out.println("这是主线程"+i); 11 }
练习:
给我创建三个线程,一个方法是打印1000以内的水仙花数,
一个方法是打印1000以内的所有偶数,一个方法是循环打印1000个数
1 package com.oracle.Demo02; 2 3 public class Demo02 extends Thread { 4 public void run(){ 5 for(int i=1;i<=1000;i++){ 6 int a = i%10; 7 int b = (i/10)%10; 8 int c = i/100%10; 9 if((a*a*a+b*b*b+c*c*c)==i){ 10 System.out.println("水仙花数"+i); 11 12 } 13 } 14 } 15 }
1 package com.oracle.Demo02; 2 3 public class Demo03 extends Thread{ 4 public void run(){ 5 for(int i=1;i<=100;i++){ 6 if(i%2==0){ 7 System.out.println("偶数"+i); 8 } 9 } 10 } 11 }
package com.oracle.Demo02; public class test { public static void main(String[] args) { Demo02 de = new Demo02(); de.start(); 创建第一个线程 Demo03 dee = new Demo03(); dee.start(); 创建第二个线程 for(int i =0;i<=1000;i++){ 主线程 System.out.println(i); } } }
标签:构造 关系 class 时间 练习 多个 jvm 一个 out
原文地址:https://www.cnblogs.com/wangrongchen/p/9223724.html