多线程详细解析(一) 创建线程

多线程详细解析(一)

1、何为线程

在JAVA中,正在执行程序的主体即为线程。

2、单线程程序

只有一个线程有操作的程序为单线程程序(严格来说,有些线程不是在JAVA系统上面跑的,如垃圾收集使用的线程,GUI使用的线程等)

3、多线程程序

由一个以上的线程组成的程序叫做多线程程序。

Java中开启新的线程的方法

1、通过继承THread类。

package my.study.threadStudy.demo01;

public class MyThread extends Thread{

	@Override
	public void run() {
		for(int i= 0 ;i<1000;i++){
			System.out.print("hello!");
		}
	}
}
通过集成Thread类,并覆盖其中的run()方法,即可创建一个线程实例,但是线程并未启用。

我们稍微修改一下MyThread类。

package my.study.threadStudy.demo01;

public class MyThread extends Thread{
	
	private String name;
	
	
	public MyThread(String name) {
		super();
		this.name = name;
	}


	@Override
	public void run() {
		for(int i=0 ;i<1000;i++){
			System.out.print(name);
		}
	}
}
这样我们在创建线程实例的时候。可以直接传一个参数,并且打印该参数。


现在通过一个main方法来启用该线程,Tread有一个内置的star()方法,只需调用该方法即可启用线程。

public static void main(String[] args) {
		Thread t1=new MyThread("Hello");
		Thread t2=new MyThread("World!");
		t1.start();
		t2.start();
	}

打印结果为  Hello Hello Hello...World! Wordl! World!....  Hello Hello Hello...World! Wordl! 

也就是说打印出来的结果是交替出现的。而并非所有的t1全部执行完成后,才执行t2.说明两个线程是同时启用的。

而当两个线程都启动后,主线程并没有马上停止,而是等到两个线程全部执行完毕后,主线程才关闭。说明当所有线程都结束后

程序才会结束。


注意:只有在调用start()方法时,线程才开始执行,而非run()方法,你也可以调用run()方法,但是这样线程并不会启用。


若计算机只有一个中央处理器,连个线程的操作情况如下

执行t1-->执行t2-->执行t1...

而并非是两个线程同时执行。事实上,程序的运行时想这样不断的切换有操作的线程。而这种操作就成为并发。


利用Runnable接口实现多线程

MyRunnable类实现了Runnable接口,并实现了run()方法。

public class MyRunnable implements Runnable{
	
	private String name;
	
	public MyRunnable(String name) {
		super();
		this.name = name;
	}
	@Override
	public void run() {
		for(int i=0;i<1000;i++){
			System.out.print(name);
		}
	}
}
run()方法里即该线程运行的主体。

启用线程的方法如下

Thread t1=new Thread(new MyRunnable("Hello"));
		Thread t2=new Thread(new MyRunnable("World!"));
		t1.start();
		t2.start();

Thread有个构造函数,可以将Runnable作为参数传入。

启用线程的方法仍然是.start()方法。


输出结果同利用集成Thread类时的输出结果。

线程的暂时停止
Thread.sleep();

sleep()方法时Thread中内置方法,该方法可以使该线程暂时停止。

Thread.sleep(1000)
可以使该线程暂时停止大约1秒(1000毫秒)的时间。

 

posted @ 2017-03-22 19:14  Will_Don  阅读(225)  评论(0编辑  收藏  举报