多线程-进程和线程概述以及如何使用多线程
来源:互联网 发布:魅族换windows系统 编辑:程序博客网 时间:2024/05/23 07:26
1.什么是进程?
进程是操作系统结构的基础;是一次程序的执行;
是一个程序及其数据在处理机上顺序执行时所发生的活动;
是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
2.什么是线程?
线程是进程中独立运行的子任务。
3.多线程的优点:可以大大提升系统的运行效率。
4.多线程的特点:多线程是异步的,不能把Eclipse里代码的顺序当做线程的执行顺序,线程被调用的时机是随机的。
5.如何使用多线程?
一、继承Thread类
二、实现Runnable接口(建议使用第二种方式)
下面就上面的两种方式简单测试多线程的使用:
通过继承Thread实现多线程:
package com.vhqimk.thread;/* * 通过继承Thread类实现多线程,并进行测试 */public class Test { public static void main(String[] args) { //生成一个MyThread实例myThread MyThread myThread=new MyThread(); //将实例myThread分别加载到三个线程中 Thread t1=new Thread(myThread); Thread t2=new Thread(myThread); Thread t3=new Thread(myThread); //启动三个线程 t1.start(); t2.start(); t3.start(); }}/* * 通过继承Thread类实现多线程 */class MyThread extends Thread{ //重写run()方法 public void run() { //通过Thread.currentThread().getName()获取并输出当前线程的名 System.out.println("通过继承Thread类,实现多线程"+Thread.currentThread().getName()); }}
通过实现接口实现多线程:
package com.vhqimk.thread;/* * 通过实现Runnable接口实现多线程,并进行测试 */public class Test { public static void main(String[] args) { //创建一个MyRunnable对象myRunnable MyRunnable myRunnable=new MyRunnable(); //分别将对象myRunnable加载到三个不同线程 Thread t1=new Thread(myRunnable); Thread t2=new Thread(myRunnable); Thread t3=new Thread(myRunnable); //启动三个线程 t1.start(); t2.start(); t3.start(); }}/* * 通过实现Runnable接口实现多线程 */class MyRunnable implements Runnable{ //重写run()方法 public void run() { //通过Thread.currentThread().getName()获取并输出当前线程的名 System.out.println("通过实现Runnable接口实现多线程"+Thread.currentThread().getName()); }}
特别提醒:虽然通过继承Thread类也能实现多继承,但通过继承Thread类来开发多线程应用程序在设计上是有局限性的,因为Java是单根继承,不支持多继承,而通过实现Runnable接口的方式来实现多线程则不受这方面的限制,因此建议使用第二种方式实现多线程。
阅读全文
0 0
- 多线程-进程和线程概述以及如何使用多线程
- 线程和进程的区别?以及如何实现多线程
- 多线程-进程和线程的概述
- 多线程-线程组的概述和使用
- 多线程-线程池的概述和使用
- 进程和线程,多线程
- 【多线程系列】进程与线程概述
- Java多线程1:进程与线程概述
- Java多线程1:进程与线程概述
- Java多线程1:进程与线程概述
- Java多线程1:进程与线程概述
- 线程与进程的定义以及为什么要使用多线程?
- java进程、线程、多线程以及线程安全问题
- 线程 进程 多线程的使用
- 多线程_线程组的概述和使用
- 多线程_线程池的概述和使用
- [java多线程]进程和线程
- iOS多线程--进程和线程
- 【工具库】--visual paradigm CE 使用教程
- Android之uri、file、path相互转化
- 简析android5.0 Camera使用
- Python
- OpenGL -- BMP加载
- 多线程-进程和线程概述以及如何使用多线程
- arcgis添加经纬度矢量点
- jquery ajax 传数组到后台 springmvc 接收
- 关于eclipse启动tomcat找不到maven class的问题
- java的容器——集合
- struts2框架学习笔记02
- Struts2笔记
- 使用SlidingMenu实现侧滑菜单
- Vue2.0 $set()的正确使用方式