多线程(进程、线程)

进程的概念:
        应用程序的执行示例>>>>>进程<<<<<有独立的内存空间和系统资源

线程的概念:
          CPU调用和分派的基本单位》》》线程《《《进程中执行运算的最小单位,可完成一个独立的顺序控制流程
---------------------------------------------------------------------------------------------------------

什么是多线程:

    1、如果在一个进程中同事运行了多个线程,用来完成不同的工作,则称之为"多线程"
    2、多个线程交替占用CPU资源,而非真正的并行执行

多线程的好处:
    
    1、充分利用CPU的资源
    2、简化编程模型
    3、带爱良好的用户体验 
---------------------------------------------------------------------------------------------------------
Thread类
    java提供了java.lang.thread类支持多线程编程

主线程:
    1、main()方法即为主线程入口
    2、产生其他子进程的线程
    3、必须最后完成执行,因为他执行各种关闭动作

---------------------------------------------------------------------------------------------------------
currentThread:获得设置线程名字
    示例:public static void main(String[] args) {
        //1、获取主线程对象
        Thread t=Thread.currentThread();
        System.out.println("当前线程是:"+t.getName()); //是main
        //设置线程名字
        t.setName("MyJavaThread");
        //再看名字、
        System.out.println("改完名字后线程名字:"+t.getName());//是MyJavaThread
---------------------------------------------------------------------------------------------------------
        继承Thread类创建线程
(1)    1、定义MyThread类继承Thread类     (以Thread结尾一看就知道是线程类)
    2、重写run()方法,编写线程执行体       (带大小写拼写一定不要变)
    3、创建线程对象、调用start()方法启动线程 

(2)  1、多个线程交替执行,不是真正的"并行"!
       2、线程每次执行时长由分配的CPU时间片长度决定!
示例:Thread-1:内容
      Thread-1:内容                每次执行线程的毫秒不一样,执行也是随机的线程!
      Thread-2:内容
      Thread-1:内容
--------------------------------------------------------------------------------------------------------
        继承Thread类创建线程:第一种方法run
Run方法示例:
            创建
         public class run extends Thread{
    //重写run()方法
    public void run(){
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
    public static void main(String[] args) {
            
            使用
    public static void main(String[] args) {
    run r=new run();
    run b=new run();
    //1、启动线程
    r.start();
    b.start();
    //直接使用run的1、只有主线程一条执行路径 2、一次调用了两次run()方法
    r.run();
    b.run();

注意:1、一定要继承Thread
      2、重写run方法,里面写线程需要的操作    
      3、使用Start来启动线程的,线程处于待命的状态,分配了资源之后就可以执行线程了

--------------------------------------------------------------------------------------------------------
            继承Thread类创建线程:第二种方法Runnable
实现Runnable接口创建线程
    1、定义MyRunnable类实现Runnable接口
    2、实现run()方法,编写线程执行体---------------------------这个run方法不去实现的话会报错
    3、创建线程对象,调用start()方法启动线程

示例:public class Thread_Runnable implements Runnable {
    //重写run方法
    public void run(){
        for(int i =1;i<100;i++)
            System.out.println(Thread.currentThread().getName()+":"+i);
    }
    
    //开始用了
        Thread_Runnable a=new Thread_Runnable();
        Thread b=new Thread(a,"MyThread");//改了线程名
        //启动线程
        b.start();

    注意:1、要写implements Runnable接口
          2、必须要实现Run
          3、创建线程对象  1、先创建一个Runnable实现类的对象 2、将实现类作用参数
--------------------------------------------------------------------------------------------------------
        比较两种创建线程的方式run 和Runnable

继承Thread类   run
    1、编写简单,可直接操作线程
    2、适用于单继承
实现Runnable接口 Runnable          -----------------    推存使用实现Runnable方式创建线程
    1、避免单继承局限性
    2、便于共享资源
---------------------------------------------------------------------------------------------------------

总结以上内容:
    1、创建线程有2种方式    
        继续Thread类
        实现Runnable接口
    2、启动线程
        start()方法
    3、线程对象调用start()方法和调用run()方法的区别
        run():只能主线程一条执行路径
        Runnable:多条执行路径,主线程和子线程并行交替执行
---------------------------------------------------------------------------------------------------------

                线程的状态和调度
5种状态:

1、创建状态 》》 2、就绪状态 》》3、运行状态》》 (有可能会到4、阻塞状态)4、阻塞状态 》》5、死亡状态
--------------------------------------------------------------------------------------------------------
调度:

Thread.sleep(500);是休息5秒继续运行,里面一般是毫秒
setPriority(int newPriority); 更改线程的优先级
join();等该线程终止
Thread.yield();暂停当前正在执行的线程对象,并执行其他线程
interrupt();中断线程
boolean isAlive();测试线程是否处于活动状态


线程优先级由1~10表示,1最低,默认优先级为5
优先级高的线程获得CPU资源的概率较大
---------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值