zoukankan      html  css  js  c++  java
  • 复习多线程一

    复习目标:

    (1)线程与进程

    (2)为什幺使用多线程

    (3)多线程应用场景

    (4)常用的多线程创建方式

    (5)线程生命周期

    线程与进程的区别:

      每一个在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,它可以在程序里独立执行。线程基本上是轻量级的进程,它负责在单个程序里执行多任务。

      使用多线程可以把占据时间长的程序中的任务放到后台去处理,是程序运行速度加快。在一些等待的任务实现上如:用户输入、文件读写和网络收发数据等。

      如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的终止需要考虑其对程序运行的影响。需要防止线程死锁的情况。

    总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

    为什幺要使用多线程:

      为了提高程序的效率。

    多线程应用场景:

      主要能体现到多线程提高程序效率。举例: 迅雷多线程下载、分批发送短信等

    常用的多线程创建方式:

      第一种继承Thread类,重写run方法

    class CreateThread extends Thread{
    	public void run(){
    		for(int i=0;i<10;i++){
    			System.out.println("i:"+i);
    		}
    	}
    }
    
    public class ThreadDemo {
    	public static void main(String[] args) {
    		System.out.println("---多线程创建开始-----");
    		//1.创建一个线程
    		CreateThread createThread=new CreateThread();
    		//2.开始执行线程 注意:开始线程不是调用run方法,而是start方法
    		System.out.println("---多线程创建启动---");
    		createThread.start();
    		System.out.println("---多线程创建结束-----");
    	}
    
    }

    调用start方法后,代码并没有从上往下执行,而是有一条新的执行分之。

      第二种实现Runnable接口,重写run方法

    class CreateRunnable implements Runnable{
    
    	@Override
    	public void run() {
    		for (int i = 0; i< 10; i++) {
    			System.out.println("i:" + i);
    		}
    	}
    	
    }
    public class ThreadDemoTwo {
    	public static void main(String[] args) {
    		System.out.println("-----多线程创建开始-----");
    		CreateRunnable createThread=new CreateRunnable();
    		System.out.println("-----多线程创建启动-----");
    		Thread thread=new Thread(createThread);
    		thread.start();
    		System.out.println("-----多线程创建结束-----");
    	}
    }
    

      

    第三种使用匿名内部类方式

    public static void main(String[] args) {
    		System.out.println("--多线程创建开始---");
    		Thread thread=new Thread(new Runnable(){
    			@Override
    			public void run() {
    				for (int i = 0; i< 10; i++) {
    					System.out.println("i:" + i);
    				}
    			}
    		});
    		thread.start();
    		System.out.println("--多线程创建结束----");
    	}
    

      

    使用继承Thread类好还是实现Runnable接口好?

      使用实现Runnable接口好,因为实现了接口还可以继承,继承了类就不能再继承了。

    启动线程是使用调用start方法还是run方法?

      开始线程不是调用run方法,而是start方法。

    获取线程对象以及名称

    常用i线程api方法

    start() 启动线程
    currentThread() 获取当前线程对象
    getID()  获取当前线程id   Thread-编号   该编号从0开始
    gatName()  获取当前线程名称
    sleep(long mill)  休眠线程
    Stop() 停止线程
    常用线程构造函数
    Thread()  分配一个新的Thread对象
    Thread(String name)  分配一个新的Thread对象,具有指定的name正如其名
    Thread(Runnable r)   分配一个新的Thread对象
    Thread(Runnable r,String name)  分配一个新的Thread对象
  • 相关阅读:
    12_RHEL7.1普通用户添加sudo权限
    11_RHEL安装Maya2015
    10_RHEL安装搜狗输入法
    Fedora21源配置与显卡安装
    Centos7下Intel与AMD双显卡驱动的安装
    09_linux下安装Nvidia显卡驱动
    firewall-cmd --reload 防火墙
    CSS 单行 多行文本溢出显示省略号
    css3 渐变色
    Error: Cannot find module 'gulp-sass'
  • 原文地址:https://www.cnblogs.com/LWQ168/p/9175722.html
Copyright © 2011-2022 走看看