博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java——Thread/Runnable实现多线程
阅读量:6628 次
发布时间:2019-06-25

本文共 1672 字,大约阅读时间需要 5 分钟。

 一,关于线程的基本概念

                         一个独立程序的每一次运行成为一个进程。

              每个进程又可以包含多个同时执行的子任务,对应多个线程。

              将一个进程分解为互不影响的多个线程,可以使多个线程并行执行,大大缩短了执行时间。

二,通过继承Thread类实现新线程

 

public class FactorialThreadTester {	/**	 * 主线程	 */	public static void main(String[] args) {		System.out.println("main thread starts");		FactorialThread thread=new FactorialThread(10);		thread.start();  //开启新线程		System.out.println("main thread ends");	}}/* * 新类继承Thread,实现run方法 * */class FactorialThread extends Thread{	private int num;	public FactorialThread(int num){		this.num=num;	}	@Override	public void run() {		int i=num;		int result=-1;		System.out.println("new thread started");		while(i>0){			result=result*i;			i=i-1;		}		System.out.println("the factorial of "+num+"  is :"+result);		System.out.println("new thread ends");		}			}

结果:

三,通过实现Runnable接口实现多线程

public class ImplementRunnableDemo {	public static void main(String[] args) {		System.out.println("main thread starts");		FacorialThread f=new FacorialThread(10);		new Thread(f).start();//开启新线程		System.out.println("new thread started,main thread ends");	}}/* *  * 通过实现Runnable接口实现多线程,实现接口中run方法 * */ class FacorialThread implements Runnable{	 private int num;		public FacorialThread(int num){			this.num=num;		}		@Override		public void run() {			int i=num;			int result=-1;			System.out.println("new thread started");			while(i>0){				result=result*i;				i=i-1;			}			System.out.println("the factorial of "+num+"  is :"+result);			System.out.println("new thread ends");			}					}

       这种方法跟继承Thread类其实没多大区别,只不过因为Java是单继承语言,可能实现多线程的类已经继承了别的父类,在是时候,可以通过实现接口的方式来实现多线程。

     可以从执行结果看出,当开启新线程之后,主线程继续执行,也就是说程序的执行并没有阻塞在新线程的start方法中。

 

         因此,在执行耗时操作,比如网络操作,IO读取等,我们可以重新开启一个线程,在新线程里面放入我们要执行的操作,以保证我们其他操作不受影响。

转载地址:http://afhpo.baihongyu.com/

你可能感兴趣的文章
HSF源码阅读
查看>>
【死磕jeesite源码】Jeesite配置定时任务
查看>>
程序8
查看>>
TBluetoothLEDevice.UpdateOnReconnect
查看>>
poj3517
查看>>
iphone http下载文件
查看>>
poj 1195:Mobile phones(二维树状数组,矩阵求和)
查看>>
java中的Static class
查看>>
json lib 2.4及其依赖包下载
查看>>
计算机中文核心期刊
查看>>
转:CEO, CFO, CIO, CTO, CSO是什么
查看>>
linux下vim更改注释颜色
查看>>
在SSL / https下托管SignalR
查看>>
Using JRuby with Maven
查看>>
Netty了解与小试
查看>>
醒醒吧少年,只用Cucumber不能帮助你BDD
查看>>
一名女程序员对iOS的想法
查看>>
西班牙现新型电费退款网络诈骗 侨胞需谨防上当
查看>>
Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)...
查看>>
最严新规发布 网络短视频平台该如何降低违规风险? ...
查看>>