(1)Java多线程的实现
来源:互联网 发布:淘宝卖衣服有哪些品牌 编辑:程序博客网 时间:2024/05/17 03:09
- 引言
- Java多线程的实现
- 1 多线程的优缺点
- 2 多线程的实现
- 3使用 Thread实现多线程技术
- 4使用 Runnable实现多线程技术
- 总结
1.引言
在学习线程之前,学习一下进程的概念是十分有比较的,那么什么是进程呢?通俗的来讲:进程可以理解为一个应用程序,比如我们打开一个VS软件,或者打开一个myeclipse软件,就产生了一个进程。那么什么是线程呢?线程可以理解为:进程中独立运行的子任务。,一个进程可以由多个线程组成(一个进程至少有一个线程)。进程,应用程序,线程的关系如下图所示:
2.Java多线程的实现
2.1 多线程的优缺点
优点: 为什么要有多线程这种技术呢?我们可以考虑一个场景,一个砖厂有2000块砖头,我们需要将1000块砖头从砖厂A运送到砖厂B,如果我们用一个人来搬砖(一次只能搬十块),可能需要4个小时,但是如果我们需要雇佣10个人来搬砖,速度就要快得多。
缺点:同样是上面那个例子,多线程我们要注意线程安全问题,比如:多个人来搬砖,如何保证只搬砖1000快,不能多,也不能少。这就要牵扯到线程安全的问题。当然,安全问题也不仅仅是这一个方面,在后面的学习中将渐渐的介绍如何各种安全问题,以及如何避免安全问题。
2.2 多线程的实现
在Java中我们实现多线程的方法有两种:
- 继承Thread类
- 实现Runnable接口
这两个方法之间的关系是:
2.3使用 Thread实现多线程技术
- 首先我们创建一个类(叫做:MyThread):注意要实现run方法
public class MyThread extends Thread{ @Override public void run() { System.out.println("MyThread线程启动了"); super.run(); }}
- 在main方法中使用MyThread线程
public class app { public static void main(String[] args) { //创建一个线程实例 MyThread td=new MyThread(); //启动线程 td.start(); System.out.println("main主线程"); }}
运行结果
运行结果告诉我们:
当java应用程序运行之后,默认是有一个线程的,叫做main线程。我们前面说过进程是一个引用程序,一个进程有多个线程组成,也就是说进程至少有一个线程上面的程序有两个线程,一个是自定义的线程,一个是main主线程每一个线程之间的运行顺序是随机的(可以看作是随机的,但是不是完全随机的)。
2.4使用 Runnable实现多线程技术
- 创建一个类,实现Runnable接口,注意要实现run方法
public class MyThread implements Runnable{ @Override public void run() { System.out.println("实现了Runnable接口"); }}
- 运行自定义的线程
public class app { public static void main(String[] args) { //创建一个线程实例,传入我们的接口类 Thread td=new Thread(new MyThread()); //启动线程 td.start(); System.out.println("main主线程"); }}
- 运行结果
结果解释
要运行实现了接口的线程方法,需要使用Thread类包装一下。即:将类对象传入Thread的构造方法。然后启动该线程
3.总结
在本篇博客中主要介绍了:
- 什么是进程,什么是线程
- 线程和进程之间的关系(一个进程至少包含一个线程)
- 在Java中如何实现多线程的技术。
1 1
- (1)Java多线程的实现
- Java 多线程(多线程的实现)
- Java 多线程的实现
- Java多线程的实现
- java多线程的实现
- java多线程的实现
- JAVA多线程的实现
- java多线程的实现
- java多线程的实现
- Java多线程的实现
- Java多线程的实现
- Java多线程的实现
- java中多线程的实现方式以及区别(1)
- java-exercise-1 多线程下载的实现
- Java 多线程(二) 线程的实现
- java多线程(二):线程的实现
- Java 多线程(二) 线程的实现
- Java 多线程(二) 线程的实现
- 关于MT7620A的DTS的再次复习
- POJ 3468 A Simple Problem with Integers (线段树区间修改查询)
- python爬虫中的cookie详解
- [SAP ABAP开发技术总结]搜索帮助Search Help (F4)
- C# 类继承(知识要点归纳总结)
- (1)Java多线程的实现
- 浮点数类型在内存之中的存储方式
- 机器学习(四):w·x+b模型(1)
- 有哪些适合新手练手的Python项目?
- 1622-5 孔富晨 总结《2017年1月16日》 【连续第108天总结】
- PHP_CodeSniffer 使用攻略
- Dubbo之服务消费者Web应用war包的部署
- 多页面切换头部缩放控件
- 基础练习 2n皇后问题