博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习笔记之线程(一)
阅读量:6593 次
发布时间:2019-06-24

本文共 1898 字,大约阅读时间需要 6 分钟。

线程(一)

一、线程定义于组成:

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

你可能感兴趣的文章
52、多线程创建的三种方式对比
查看>>
【转载】Jquery验证 Jquery.validate详细解读
查看>>
软件需求规格书
查看>>
用Java axis2调用.net平台的Webservice出现的一些问题
查看>>
INSTALL_FAILED_OLDER_SDK
查看>>
VS2005内存泄漏检测方法[转载]
查看>>
M1 spec
查看>>
洛谷P1948 [USACO08JAN]电话线Telephone Lines
查看>>
0619-dedeCMS的安装、重装、目录说明、基本操作及注意事项
查看>>
【转】SQL Server 连接error: 40 - 无法打开到 SQL Server 的连接错误解决方案
查看>>
19.04.08-小练习
查看>>
ES6第二篇:变量的解构赋值
查看>>
关于C语言的问卷调查
查看>>
理解session 和 cookie 哦
查看>>
OK335xS EMMC Partition hacking
查看>>
三角形面积 蓝桥杯
查看>>
form的一个问题
查看>>
数据库操作
查看>>
samba介绍和安装
查看>>
利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
查看>>