zoukankan      html  css  js  c++  java
  • java学习笔记之线程(一)

    线程(一)

    一、线程定义于组成:

    1.创建任务和线程:

    1 TaskThread task = new TaskThread();     // 创建任务
    2 Thread taskThread  = new Thread(task);  // 根据任务创建对应的执行线程

    2.任务 ,实现Runnable 接口

    Override run()方法

    1 class TaskThread implements Runnable{
    2    ...
    3    public void run(){
    4      //执行体 ,告诉系统如何执行线程
    5    }
    6 }
    7  

    3.执行线程的class 内,调用start()方法执行线程

    1 threadtask.start()                   // 主程序启动线程

    二、Thread类

    1.方法:

    1 Thread()                             // 创建空线程
    2 Thread(task:Runnable)                // 创建指定任务线程
    3 start():void                         // 启动线程run()被jvm执行
    4 isAlive():boolean                    // 测试当前线程是否在执行
    5 join():void                          // 等待 线程结束
    6 setPriority(p:int ):void             // 设置线程优先级,
    7 sleep(mills:long):void               // 线程睡眠 mills毫秒
    8 yield():void                         // 暂停当前线程并允许其他线程执行
    9 interrupt():void                     // 中断线程             

    2.sleep()

    sleep() 可能抛出 InterruptException 的必检异常,java里强制try/catch 必检异常。

    3.线程优先级

    Thread 里 定义的int常量 对应不同的优先级:

    MIN_PRIORITY 代表 1;

    NORM_PRIORITY 代表 5;

    MAX_PRIORITY 代表 10;

    Thread.NORM_PRIORITY 为主线程优先级

    JVM总是执行优先级高的线程,再执行低的。当线程优先级相同时,将线程放入循环队列里,循环调度。

    三、 线程池

    我们对一个任务创建一个线程时用的是Thread类,而我们要为多个任务创建线程时,我们就要用到线程池

    Executor接口 执行线程池内的任务

    ExecutorService 是Executor 子接口

    Executors类里,静态方法 newFixedThreadPool( int threadNum )  创建Executor对象 / /在线程池创建固定数目的线程

     1 import java.util.concurrent.ExecutorService;
     2 import static java.util.concurrent.Executors.newFixedThreadPool;
     3 public class ExecutorDemo {    
     4   public static void main(String []args){       
     5     ExecutorService excutor =  newFixedThreadPool(3);     // 静态方法不用new 对象,直接调用 newFixedThreadPool()   ,最大线程数为3    
     6     excutor.execute(new PrintChar('a',100));              // 第一个线程添加到 线程池
     7     excutor.execute(new PrintChar('b',100));        
     8     excutor.execute(new PrintNum(100));        
     9     excutor.shutdown();                                   // 执行器关闭
    10  }
    11 }
     
  • 相关阅读:
    CSRF的防御解决过程
    Spring生态研习【三】:Spring-kafka
    Spring生态研习【二】:SpEL(Spring Expression Language)
    Spring生态研习【一】:定时任务Spring-task
    给定一个大的任务,需要在考虑性能的情况下,快速处理完,并报告结果
    给定一个大于2的偶数,将其分解为两个质数的和
    一个求解平方根的算法题
    Kafka研究【一】:bring up环境
    LB+nginx+tomcat7集群模式下的https请求重定向(redirect)后变成http的解决方案
    IDEA使用笔记(八)——自动生成 serialVersionUID 的设置
  • 原文地址:https://www.cnblogs.com/HankCui/p/6528453.html
Copyright © 2011-2022 走看看