多线程

作者: Scalelength | 来源:发表于2018-07-26 10:52 被阅读0次

概述
        线程
                线程是比进程更小的执行单位,一个进程包含多个线程
                可以看做为子程序
        进程概念
                进程是指可执行程序并存放在计算机存储器中的一个指令序列,它是一个动态执行的过程
        多线程机制
                时间片轮转
        线程的创建
                创建一个Thread类,或者一个Thread子类的对象
                创建一个实现Runnable接口的类的对象
        Thread类
                继承自Object类
                实现了Runnable接口
        Runnable接口
                只有一个方法run();任何与线程相关的代码都写入run方法里面
                Runnable是Java中用以实现线程的接口
                任何实现线程功能的类都必须实现该接口
        线程的创建
                通过Thread继承方法创建线程
                        线程要单独用一个类来继承
                            public class MyThread extends Thread{
                                    重写run方法
                                    public void run(){}
                            }
                        实现线程的类要实例化并使用start()方法运行线程
                            public class ThreadTest{
                                    main(){thread.start()}
                            }
                通过Runnable接口创建线程
                        为什么要用实现Runnable接口创建线程
                                1.Java不支持多继承
                                2.不打算重写Thread类的其他方法

        线程的生命周期
            线程的状态
                1.新建(New)
                2.可运行(Runnable)
                3.正在运行(Running)
                4.阻塞(Blocked)
                5.终止(Dead)
            sleep方法应用
                Thread类的方法
                    public static void sleep(long millis)
                    作用:在指定的毫秒数内让正在执行的线程休眠(暂停执行)
                    参数为休眠的时间,单位是毫秒
            join方法应用
                Thread类的方法
                    public fianl void join()
                    作用:等待调用该方法的线程结束后才能执行
                    public final void join(long millis)
                    作用:等待该线程终止的最长时间为millis毫秒
                    如果millis为0则意味着要一直等下去。

        线程的优先级
            Java为线程类提供了10个优先级。
            优先级可以用整数1-10表示,超过范围会抛出异常
            主线程默认优先级为5
            优先级常量:
                MAX_PRIORITY:线程的最高优先级10
                MIN_PRIORITY:线程的最低优先级1
                NORM_PRIORITY:线程的默认优先级5
            优先级方法:
                public int getPriority()
                获取优先级的方法
                public void setPriority(int newPriority)
                设置优先级的方法

        线程同步
            多线程运行问题
                各个线程是通过竞争CPU时间而获得运行机会的
                各线程什么时候得到CPU时间,占用多久,是不可预测的。
                一个正在运行着的线程在什么地方被暂停是不确定的。
            同步关键字
                使用关键字synchronized实现(同步关键字)
                synchronized关键字用在
                    成员方法、静态方法或语句块
                    public synchronized void 方法名()
                    或
                    public static synchronized void 方法名()
                    或
                    synchronized(obj){}

        线程间通信
            wait()方法:中断方法的执行,使线程等待
            notify()方法:唤醒处于等待的某个线程,使其结束等待
            notifyAll()方法:唤醒所有处于等待的线程,使他们结束等待
            更多体现的是操作系统中的PV操作
private int n;

boolean flag=false;

public synchronized int get() {

if(!flag){

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("消费:"+n);

flag=false;//消费完毕,容器中没有数据

notifyAll();

return n;

}

public synchronized void set(int n) {

if(flag){

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("生产:"+n);

this.n = n;

flag=true;//生产完毕,容器中已经有数据

notifyAll();

}

相关文章

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • iOS进阶之多线程管理(GCD、RunLoop、pthread、

    深入理解RunLoopiOS多线程--彻底学会多线程之『GCD』iOS多线程--彻底学会多线程之『pthread、...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

      本文标题:多线程

      本文链接:https://www.haomeiwen.com/subject/yvfvmftx.html