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 }
转载于:https://www.cnblogs.com/HankCui/p/6528453.html
java学习笔记之线程(一)相关推荐
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- 0040 Java学习笔记-多线程-线程run()方法中的异常
run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...
- 【Java学习笔记】线程学习笔记
一.资源 http://blog.csdn.net/axman/article/details/431796 这个博客里有Java多线程.线程池的一系列,从基础开始就很清楚,牛人 二.重点 今天读到了 ...
- Java学习笔记16-多线程
1.多线程 进程:执行中的程序叫做进程(Process),是一个动态的概念.为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据,每个进程由3部分组成:cpu,data,co ...
- Java 学习笔记之 线程安全
线程安全: 线程安全的方法一定是排队运行的. public class SyncObject {synchronized public void methodA() {try {System.out. ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- Java学习笔记:创建线程的两种方法
Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
最新文章
- java------LinkedHashMap
- 《阿里巴巴Java开发规约》插件全球首发!
- .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...
- python----字符串方法
- php curl_init不能用,curl_init()函数不起作用
- 任务太多?学着突破重围
- 女的喜欢OBC男的喜欢OGC的含义(转)
- Java String 探索
- dw2019连接mysql数据库_Python3连接MySQL数据库
- mysql数据库sql注入原理_如何SQL注入的原理和SQL注入的基础
- fork函数_Linux中子进程回收函数:wait和waitpid
- css实现时间数字特效字体格式
- 关于“商用超极本应用体验分享沙龙”的体验之旅——商用超极本的崛起之路、真机实测、优缺点分析与使用评价
- html双线型边框线怎么设置,Word文字边框双线条怎么设置
- OpenCv图像处理实战——银行卡卡号识别
- vs2015 帮助内容_我在2015年阅读的内容
- 【加拿大签证】加拿大政府指定的签证办理中国体检医院一览【2019官方最新版,加拿大签证体检必看】
- 矩阵和矢量的点乘推导及其简单应用
- 电脑开机黑屏提示:ERROR 0199:System Security-Security password retry count exceeded(by 星空武哥)
- eth_clockgen.v
热门文章
- 记录用友ERP二次开发全过程(转载)
- JSP自定义标签(2)
- Java 类锁、对象锁、私有锁
- Python算法教程第一章知识点:利用插入元素的例子详解list之本质
- 字符串json转成json对象
- eclipse导入后将普通项目变为java项目build path,no action avilia
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递...
- Linux 中的 XEN 虚拟化技术(二)Xen 的安装和配置
- Enterprise Library Policy Injection Application Block 之一: PIAB Overview
- 《Ray Tracing from the Ground Up》中的坐标系是怎么确定的