Java中关于单核处理多个线程的认识与了解

一:单核执行多线程

1.

			首先要知道 进程,线程,程序
			进程:执行中的程序叫做进程(Process),是一个动态的概念,在一个进程中包含多个线程
			线程:指的是一条执行路径
			程序:就是静态的代码块

2.

    那么在一个进程中,会有一个主线程  也就是main线程,我们一般通过继承Runable接口 重写 run ()方法,然后创建一个实现类对象.然后启动线程,在启动线程中需要用到start()方法。而start()方法是Thread类的新增方法,所以在启动线程时 ,   new Thread(实现类对象).start();
package com.wyj.one;
/**
 * 多线程的创建方式二:
 * 1:创建:实现Runnable接口+重写run
 * 2:启动:创建实现类对象+Thread对象+start方法(这里需要Thread对象  因为start方法是Thread特有的);
 * @author 86155
 *
 * 推荐:避免单继承的局限性,优先使用接口 方便共享资源
 */
public class Demo4_多线程的创建02 {
	public static void main(String[] args) {
	
		/*
		//创建实现类对象
		son1 p = new son1();
		
		//启动start方法
		Thread t = new Thread(p);
		t.start();  //当程序执行到这里  然后交给cpu去调度(这是一种执行路径)
					//程序不会停止会去执行下一行代码(即是主线程的的执行路径)
		*/
		//上方代码合为一个代码 ( 如果一个实例化对象只使用一次的话就可以使用匿名对象)
		
		new Thread( new son1()).start();
		
		for( int i = 0; i < 20; i++) {
			System.out.println("我在 codeing!");
		}	
	}
}

class son1 implements Runnable{
	//线程入口点
	
	public void run() {
		for(int i = 0; i < 20; i++) {
			System.out.println("我在听歌曲!");
		}
	}
	
}

二:进阶

真正的多线程是需要多核的,那么我们写的程序当中只是调用了一个cpu,那么在处理多线程时,在同一个时间段内只能处理一个代码块,单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑。其效率不会有提高的,而且切换线程反倒会增加开销。 那么当启动线程后,当cpu调用到run()方法时,就执行这个方法,当cpu执行其他线程时,run()方法停止,当再次回到run()方法时,会继续上次执行到哪,然后继续执行下去 。

你可能感兴趣的:(java多线程,java,多线程)