0
点赞
收藏
分享

微信扫一扫

自定义线程


自定义线程Thread类


         


     进程:正在执行的程序成为一个进程。进程负责了内存空间的划分。


     问题:windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗?


             从宏观的角度:windows确实是在同时运行多个应用程序。


             从微观角度:CPU是做了一个快速切换执行的动作,由于速度太快,所以我们感觉不到在切换而已。


     单核的CPU在一个时间片中只能执行一个应用程序。


     各个应用程序其实是在做CPU的资源争夺战而已。CPU做了快速的切换动作。


     线程:线程在一个进程中负责了代码的执行,就是进程中的一个执行路径。


     多线程:在一个进程中有多个线程同时在执行不同的任务。与其说是进程在做CPU的资源争夺战,还不如说是线程在做CPU的资源争夺战。


     疑问:线程负责了代码的执行,我们之前没有学过线程,为什么代码可以执行呢?


          任何一个java程序,JVM在运行的时候都会创建一个main线程执行main方法中所有代码。


     疑问:一个java应用程序至少有几个线程?


            至少有2个线程,一个是主线程负责了main方法的执行,一个是垃圾回收器线程,负责了回收垃圾。    


     多线程的好处:


             1.解决了我们一个进程能同时执行多个任务的问题


             2.提高了资源的利用率。


     多线程的弊端:


             1.增加了CPU的负担。


             2.降低了一个进程中线程的执行概率。


             3.引发了线程安全问题。


             4.出现了死锁现象。


     如何创建多线程:


             方式1:


                 1.将类声明为 Thread 的子类。


                 2.重写Thread类的run方法,把自定义线程的任务写在run()方法中。


                     疑问:重写run方法的目的是什么?


                              每个线程都有自己的 任务代码,JVM创建的主线程的任务代码就是main方法中的所有代码。自定义线程的任务代码就写在 run方法中,自定义线程负责了run方法中代码。


                 3.创建Thread的子类对象,并且调用start()方法开启线程。


     


 注意:一个线程一旦开启,那么线程就会执行run()方法中的代码,run()方法千万不能直接调用,直接调用run()方法就相当 调用了一个普通的方法而已。

​​package com.cn.thread;​​​​/**​​​​* Author:Liu Zhiyong​​​​* Version:Version_1​​​​* Date:2016年7月3日14:26:04​​​​* Desc:自定义线程​​​​*     ​​​​*       进程:正在执行的程序成为一个进程。进程负责了内存空间的划分。​​​​*     问题:windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗?​​​​*         从宏观的角度:windows确实是在同时运行多个应用程序。​​​​*        从微观角度:CPU是做了一个快速切换执行的动作,由于速度太快,所以我们感觉不到在切换而已。​​​​*     单核的CPU在一个时间片中只能执行一个应用程序。​​​​*     各个应用程序其实是在做CPU的资源争夺战而已。CPU做了快速的切换动作。​​​​*     线程:线程在一个进程中负责了代码的执行,就是进程中的一个执行路径。​​​​*     多线程:在一个进程中有多个线程同时在执行不同的任务。与其说是进程在做CPU的资源争夺战,还不如说是线程在做CPU的资源争夺战。​​​​*     疑问:线程负责了代码的执行,我们之前没有学过线程,为什么代码可以执行呢?​​​​*          任何一个java程序,JVM在运行的时候都会创建一个main线程执行main方法中所有代码。​​​​*     疑问:一个java应用程序至少有几个线程?​​​​*         至少有2个线程,一个是主线程负责了main方法的执行,一个是垃圾回收器线程,负责了回收垃圾。 ​​​​*     多线程的好处:​​​​*        1.解决了我们一个进程能同时执行多个任务的问题​​​​*        2.提高了资源的利用率。​​​​*     多线程的弊端:​​​​*        1.增加了CPU的负担。​​​​*         2.降低了一个进程中线程的执行概率。​​​​*         3.引发了线程安全问题。​​​​*         4.出现了死锁现象。​​​​*     如何创建多线程:​​​​*         方式1:​​​​*           1.将类声明为 Thread 的子类。​​​​*          2.重写Thread类的run方法,把自定义线程的任务写在run()方法中。​​​​*             疑问:重写run方法的目的是什么?​​​​*                   每个线程都有自己的 任务代码,JVM创建的主线程的任务代码就是main方法中的所有代码。自定义线程的任务代码                             就写在​​
1. run方法中,自定义线程负责了run方法中代码。
​​* 3.创建Thread的子类对象,并且调用start()方法开启线程。​​​​* ​​​​* 注意:一个线程一旦开启,那么线程就会执行run()方法中的代码,run()方法千万不能直接调用,直接调用run()方法就相当 调用了一个​​​​* 普通的方法而已。​​​​* ​​​​*/​​​​public class Demo1 extends Thread{​​​​ @Override //把自定义线程的任务写在run()方法中​​​​ public void run(){​​​​ for(int i=0; i<100; i++){​​​​ System.out.println("自定义线程:" + i);​​​​ }​​​​ }​​​​​​​​ public static void main(String[] args) {​​​​ //创建了自定义的线程对象​​​​ Demo1 d = new Demo1();​​​​ d.run();​​​​ d.start();​​​​ for(int i=0; i<100; i++){​​​​ System.out.println("main线程:" + i);​​​​ }​​​​ } ​​​​​​​​}​​
​​package com.cn.thread;​​​​/**​​​​* Author:Liu Zhiyong​​​​* Version:Version_1​​​​* Date:2016年7月3日15:35:24​​​​* Desc:需求:模拟QQ视频与聊天​​​​*/​​​​class QqVideo extends Thread{​​​​ @Override​​​​ public void run() {​​​​ while(true){​​​​ System.out.println("我正在QQ视频111111。。。。");​​​​ }​​​​ }​​​​}​​​​​​​​class QqChat extends Thread{​​​​ @Override​​​​ public void run() {​​​​ while(true){​​​​ System.out.println("我正在QQ聊天222222。。。。");​​​​ }​​​​ }​​​​}​​​​​​​​public class Demo2 {​​​​ public static void main(String[] args) {​​​​ QqVideo v = new QqVideo();​​​​ v.start();​​​​ QqChat c = new QqChat();​​​​ c.start();​​​​ }​​​​}​​

举报

相关推荐

0 条评论