线程(一)

一、线程定义于组成:

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 }

转载于:https://www.cnblogs.com/HankCui/p/6528453.html

java学习笔记之线程(一)相关推荐

  1. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  2. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  3. 0040 Java学习笔记-多线程-线程run()方法中的异常

    run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...

  4. 【Java学习笔记】线程学习笔记

    一.资源 http://blog.csdn.net/axman/article/details/431796 这个博客里有Java多线程.线程池的一系列,从基础开始就很清楚,牛人 二.重点 今天读到了 ...

  5. Java学习笔记16-多线程

    1.多线程         进程:执行中的程序叫做进程(Process),是一个动态的概念.为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据,每个进程由3部分组成:cpu,data,co ...

  6. Java 学习笔记之 线程安全

    线程安全: 线程安全的方法一定是排队运行的. public class SyncObject {synchronized public void methodA() {try {System.out. ...

  7. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  8. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  9. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

最新文章

  1. java------LinkedHashMap
  2. 《阿里巴巴Java开发规约》插件全球首发!
  3. .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...
  4. python----字符串方法
  5. php curl_init不能用,curl_init()函数不起作用
  6. 任务太多?学着突破重围
  7. 女的喜欢OBC男的喜欢OGC的含义(转)
  8. Java String 探索
  9. dw2019连接mysql数据库_Python3连接MySQL数据库
  10. mysql数据库sql注入原理_如何SQL注入的原理和SQL注入的基础
  11. fork函数_Linux中子进程回收函数:wait和waitpid
  12. css实现时间数字特效字体格式
  13. 关于“商用超极本应用体验分享沙龙”的体验之旅——商用超极本的崛起之路、真机实测、优缺点分析与使用评价
  14. html双线型边框线怎么设置,Word文字边框双线条怎么设置
  15. OpenCv图像处理实战——银行卡卡号识别
  16. vs2015 帮助内容_我在2015年阅读的内容
  17. 【加拿大签证】加拿大政府指定的签证办理中国体检医院一览【2019官方最新版,加拿大签证体检必看】
  18. 矩阵和矢量的点乘推导及其简单应用
  19. 电脑开机黑屏提示:ERROR 0199:System Security-Security password retry count exceeded(by 星空武哥)
  20. eth_clockgen.v

热门文章

  1. 记录用友ERP二次开发全过程(转载)
  2. JSP自定义标签(2)
  3. Java 类锁、对象锁、私有锁
  4. Python算法教程第一章知识点:利用插入元素的例子详解list之本质
  5. 字符串json转成json对象
  6. eclipse导入后将普通项目变为java项目build path,no action avilia
  7. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递...
  8. Linux 中的 XEN 虚拟化技术(二)Xen 的安装和配置
  9. Enterprise Library Policy Injection Application Block 之一: PIAB Overview
  10. 《Ray Tracing from the Ground Up》中的坐标系是怎么确定的