• 线程


    多任务处理有两种类型:
    --基于进程
    --基于线程

    进程:是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。

    线程:是进程内部单一的顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。


    主线程:

    main方法一运行,就开启主线程。
    主线程特点:
    1、最先开始
    2、最后结束
    3、可以开启其他的子线程
    4、回收资源


    创建线程的方式:
    方式一: 继承Thread类,然后重写run()方法。
    方式二: 实现Runnable接口,实现run()。

    线程中start方法和run方法的区别:
          启动线程,应该调用线程类的start()方法,是在主线程之外,另外创建子线程。主线程和子线程交替运行。
    如果直接调用run()方法,不会单独创建子线程,是普通方法调用,会在run()执行完毕以后,再去执行其他代码。

     1 package 线程;
     2 
     3 
     4 
     5 public class ThreadTest {
     6     public static void main(String[] args) {
     7         
     8         //方式一线程  测试
     9         OneThread on=new OneThread();
    10         //启动线程。线程启动后,会调用Thread类的run()
    11         on.start();
    12         //只是普通的该方法调用,只有该方法执行完后才会执行其他方法
    13         on.run();
    14         //方式二线程  测试
    15         TwoThread two=new TwoThread();
    16         //以Runnable 接口实现类作参数,表示线程启动后,会调用Runnable实现类的run()
    17         Thread th=new Thread(two);
    18         th.start();
    19         
    20         for (int i = 0; i <10; i++) {
    21             System.out.print(i+" ");            
    22             try {
    23                 //休眠,让当前线程休眠500毫秒,然后继续执行
    24                 Thread.sleep(500);
    25             } catch (InterruptedException e) {
    26                 // TODO Auto-generated catch block
    27                 e.printStackTrace();
    28             }
    29         }
    30     }
    31 
    32 }
    33 /**
    34  * 创建线程       方式一
    35  * @author Administrator
    36  *
    37  */
    38 class OneThread extends Thread{
    39 
    40     @Override
    41     public void run() {
    42         for (int i = 10; i < 20; i++) {
    43             System.out.print(i+" ");
    44             try {
    45                 Thread.sleep(500);
    46             } catch (InterruptedException e) {
    47                 // TODO Auto-generated catch block
    48                 e.printStackTrace();
    49             }
    50         }
    51     }    
    52 }
    53 /**
    54  * 创建线程       方式二
    55  * @author Administrator
    56  *
    57  */
    58 class TwoThread implements Runnable{
    59 
    60     @Override
    61     public void run() {
    62         for (int i = 20; i <30; i++) {
    63             System.out.print(i+" ");
    64         }
    65         try {
    66             Thread.sleep(500);
    67         } catch (InterruptedException e) {
    68             // TODO Auto-generated catch block
    69             e.printStackTrace();
    70         }
    71     }
    72 }    

    线程状态:
         新建: 通过new的方式产生一个线程对象
         就绪: start启动,运行run方法
         运行: 执行run方法
         死亡: 线程run()方法执行完毕
         睡眠: 调用线程sleep()方法
         等待: 调用Object的wait()方法
         挂起:调用yield()方法,线程显示出让CPU控制权。
         阻塞: 等待IO事件输入。如JOptionPane输入框

    线程优先级:
          当两个或两个以上的线程同时处理就绪状态,那么优先级高的线程,会优先得到执行。线程的优先级分为10级,默认为5级。数字越大,优先级越高。在开发中可以通过Thread类的setPriority()改变优先级。

  • 相关阅读:
    [Nowcoder] 六一儿童节(拼多多)
    [Nowcoder] 大整数相乘(拼多多笔试题)
    [Nowcoder] 最大乘积(拼多多笔试题)
    [Paddle学习笔记][06][图像分类-动态图]
    [Paddle学习笔记][05][对抗生成网络]
    [Paddle学习笔记][04][图像分类]
    [Paddle学习笔记][03][数字识别]
    [Paddle学习笔记][02][MNIST转换到PNG]
    [Paddle学习笔记][01][线性回归]
    [caffe学习笔记][06][使用LeNet分类输入图片]
  • 原文地址:https://www.cnblogs.com/jichuang/p/6680440.html
Copyright © 2020-2023  润新知