多线程——继承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中同一个类不能同一时候继承多个类。这就给操作带来了不便。同一时候。这样的方式也不能达到数据共享的目的。至于怎样实现数据共享,待下篇博客介绍。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- Java笔记:多线程
- C# 多线程多文件批量下载---子线程中更新UI 实例
- [Java] 实现多线程的两种方法
- C# WinForm多线程开发(一) Thread类库
- C# 多线程网络爬虫
- Java多线程 -yield用法
- Qt 实现多线程的串口通信
- libcurl长连接高并发多线程
- iOS-UIImageView载入网络下载的图片(异步+多线程)
- .net多线程,线程异步,线程同步,并发问题---1---ShinePans
- 秒杀多线程第四篇 一个经典的多线程同步问题
- 多线程的并发一般不是程序员决定,而是由容器决定
- 39 _ Redis 6.0的新特性:多线程、客户端缓存与安全
- PulseAudio多线程通信:pthread_cond_broadcast/pthread_cond_signal/pthread_cond_wait(九)