多线程——继承Thread类别

详细java此前使用多线程,让我们来看看下面的问题。


什么是多线程
    简单的理解成:cpu“同一时候”运行多个任务,这就是多线程。

(究其本质,当涉及到进程和线程的概念。上面的说法也不太合适,只是。简单的理解成这样也不为过。)
    
多线程攻克了什么问题?
    多线程通过充分利用cpu实现了提高计算机效率的问题。



使用了多线程,效率就一定会提高?
    答案是否定的。在适当的情况下使用多线程,确实能提高效率,可是假设滥用多线程,有时候效率反而会减少。那么,什么情况下使用多线程会提高效率就成为了一个至关重要的问题。想真正弄清楚这个问题。就必需要明确操作系统中cpu的调度原理。还有,最好要清楚你使用的计算机有几个cpu。每一个cpu是几核的。这在推断启用多少个线程时起着至关关键的数据。
    
多线程不是万能的,可是没有多线程是万万不能的。

所以,多线程是我们须要掌握的知识。可是,知道什么时候用多线程远比知道怎样用多线程更为重要。这也就是“不怕不知道,就怕不知道”的一个实例化对象。

以下就让我们看看java中是怎样使用多线程的。

java中创建线程有三种方法
    1、直接继承Thread类。并重写它的run方法
    2、实现Runnable接口。并实现它的run方法
    3、实现Callable接口,并实现它的call方法


这篇博客,我们以一个实例来介绍一下第一种方法——继承Thread类。

有一个字符串数组,如今我们要使用多线程分别打印出数组中各字符串的长度。

详细代码例如以下:

<span style="font-family:Microsoft YaHei;font-size:18px;">public class Test extends Thread{
	
	private String word;
	
	public Test(String word){
		this.word = word;
	}

	@Override
	public void run() {
		System.out.println(Thread.currentThread().getName() + ": 開始运行!" );
		try {
			//如果处理须要2秒
			Thread.currentThread().sleep(2000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName() + ": 正在处理!" );
		System.out.println(Thread.currentThread().getName() + ": " + word + "长度为:" + word.length());
	}
	
	public static void main(String [] args ) {
		String [] words = {"first","second","world","thread"};
		for(String word : words){
			Test test = new Test(word);
			test.start();
		}
	}
}</span>


运行结果例如以下:

<span style="font-family:Microsoft YaHei;font-size:18px;">Thread-1: 開始运行!

Thread-2: 開始运行!

Thread-3: 開始运行。 Thread-0: 開始运行!

Thread-2: 正在处理! Thread-2: world长度为:5 Thread-1: 正在处理。 Thread-1: second长度为:6 Thread-3: 正在处理。 Thread-0: 正在处理! Thread-3: thread长度为:6 Thread-0: first长度为:5</span>



使用这样的方式实现多线程,简单、便捷,可是它要求使用类继承Thread类。而java中同一个类不能同一时候继承多个类。这就给操作带来了不便。同一时候。这样的方式也不能达到数据共享的目的。至于怎样实现数据共享,待下篇博客介绍。




版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/gcczhongduan/p/4657198.html