多线程与进程的理解
来源:互联网 发布:mac wine 软件 编辑:程序博客网 时间:2024/05/20 09:27
Java中有一个多线程的概念一直无法理解,最近找到一个比喻 :
客人来了要沏茶给他喝,这时候你可以采用以下两种方法:
单线程:
多线程:
由此可见,多线可以提高程序运行效率,尤其是程序块比较多时.
在Java中实现多线程有2种手段,一种是继承Thread类,另一种是实现Runnable接口.
继承Thread类:
class MyThread extends Thread{// 继承Thread类,作为线程的实现类private String name ;// 表示线程的名称public MyThread(String name){this.name = name ;// 通过构造方法配置name属性}public void run(){// 覆写run()方法,作为线程的操作主体for(int i=0;i<10;i++){System.out.println(name + "运行,i = " + i) ;}}};public class ThreadDemo{public static void main(String args[]){MyThread mt1 = new MyThread("线程A ") ; // 实例化对象MyThread mt2 = new MyThread("线程B ") ; // 实例化对象mt1.start() ;// 启动多线程mt2.start() ;// 启动多线程--[注意]不能用mt2.run(),这样只是调用线程主体,并没有启动线程}};
实现Runnable接口:
class MyThread implements Runnable{// 实现Runnable接口,作为线程的实现类private String name ;// 表示线程的名称public MyThread(String name){this.name = name ;// 通过构造方法配置name属性}public void run(){// 覆写run()方法,作为线程 的操作主体for(int i=0;i<10;i++){System.out.println(name + "运行,i = " + i) ;}}};public class RunnableDemo{public static void main(String args[]){MyThread mt1 = new MyThread("线程A ") ; // 实例化对象MyThread mt2 = new MyThread("线程B ") ; // 实例化对象Thread t1 = new Thread(mt1) ;// 实例化Thread类对象Thread t2 = new Thread(mt2) ;// 实例化Thread类对象t1.start() ;// 启动多线程t2.start() ;// 启动多线程}};
实现Runnable接口比继承Thread有以下优势:
避免单继承
代码能被多线程共享
0 0
- 多线程与进程的理解
- 多线程之进程与线程的理解
- 多线程与多进程的理解
- 理解进程与多线程的概念及关系
- Java多线程(一)、理解进程与多线程的概念及关系
- 我理解的多进程和多线程
- 我理解的多进程,多线程
- 线程与进程的区别以及对多线程并发的理解
- 线程与进程的区别以及对多线程并发的理解
- 线程与进程的区别以及对多线程并发的理解
- lua中"协程"和erlang"进程",go等脚本 与 java 中“多线程”的对比理解
- 孤儿进程与僵尸进程的理解
- 进程与线程的理解
- 进程与线程的理解
- 进程与线程的理解
- 多线程与同步的理解
- 多进程与多线程的选择
- 多进程与多线程的选择
- Java中Vector和ArrayList的区别 --转自博客园 一沙鸥
- MongoDB学习笔记
- Android基础综合案例(四)
- JAR File Specification
- JAVA运算符的优先级与结合性
- 多线程与进程的理解
- 黑马程序员——【Java】IO——字节流
- 原地操作(删除或压缩)字符串 in-place
- Windows Azure正式商用,2000个免费账号被“秒杀”
- android,listView, 滑动删除
- 黑马程序员——【Java】IO——字节流:复制媒体文件
- 当今年变成去年的时候
- 基础知识分享
- 黑马程序员——【Java】IO——字节流:读取键盘录入