Java多线程学习(一)

1.线程的理解

   线程是程序执行的一条路径,一个进程可以包含多条线程

   多线程并发执行可以提高效率

2.多线程原理

同一时间内,CPU只能处理1条线程,只有1条线程在工作(执行);多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)。如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。

思考:如果线程非常非常多,会发生什么情况?

CPU会在N多线程之间调度,CPU会类似,消耗大量的CPU资源;每条线程被调度执行的频次会较低(线程的执行效率减低)。

3.并行与并发

并行:两个任务同时进行,需要有多核CPU才能实现

并发:两个任务同时请求运行,但CPU只能运行其中的一个,则让两个任务轮流进行,但由于时间间隔很短,给人的感觉是都在运行。

4.Java程序的运行原理

Java命令启动Java虚拟机,启动JVM就像启动了一个应用程序,一个进程,该进程会自动启动一个主线程,然后主线程去调用某个类的main方法

JVM是多线程的

5.多线程程序的实现

方法1:继承Thread类

package javastudy01;




//1.通过继承thread类
 class MyThread extends Thread {
	 //重写Run方法
	 public void run(){
		 System.out.println("我是一个线程.");
		 
		 }
	 	
public static void main(String[] args) {
	MyThread mt = new MyThread();
	mt.run();//仅相当于开启一个普通方法
	mt.start();//开启线程,且JVM自动调用run方法,开启线程需要时间
    }
		
 }

 运行结果

 方法2:实现Runnable接口

package javastudy01;

 class Myrunnable implements Runnable {
	
	
	public static void main(String[] args) {
		//由于接口中无start方法,所以需要创建线程对象t
		Myrunnable mr = new Myrunnable();
		//Punnable target = mr ;
		//把上面的对象当做参数传递给Thread的构造函数
		Thread t = new Thread(mr);
		
		t.start();

	}

	@Override
	public void run() {
		 System.out.println("我是接口实现的线程.");
	}

}

运行结果

方法3:匿名内部类

package javastudy01;

public class Thread3 {

	public static void main(String[] args) {
		 
		new Thread(){
			public void run(){
				System.out.println("匿名实现线程");
			}
		
		}.start();
		
		
		//runnable接口
		
		new Thread(new Runnable(){ //把runnable子类对象传递给thread的构造方法
			public void run(){
				System.out.println("接口匿名实现线程");
			}
			
		}).start();
	}

}

运行结果

猜你喜欢

转载自blog.csdn.net/watsonliuwho/article/details/82585942