Java回炉之多线程(一)
2015-12-09 23:34
260 查看
Java回炉之多线程(一)
Java回炉之多线程一创建方法
设置获取线程名
获取当前线程
优先级
线程控制
生命周期
状态转换
同步代码块
同步方法
Lock锁
等待唤醒机制
线程组
线程池
定时器
创建方法
继承Thread实现Runable
设置获取线程名
setName()getName()
默认线程名:Thread-x(x为编号)
获取当前线程
Thread.getCurrentThread()优先级
默认是5,最小1,最大10getPriority():获取优先级
setPriority(int):设置优先级
线程控制
Thread.sleep(long):让线程睡眠指毫秒值join():调用者执行完毕后再执行其他线程
Thread.yield():让线程执行更和谐,但不能保证均分
setDaemon():标记调用者为守护线程(代码执行者的守护线程;start()之前调用;被守护线程结束后,守护线程结束)
stop():让线程停止(不安全)
interrupt():让线程中断,并抛出异常
生命周期
新建:创建对象就绪:有执行资格,但没执行权
运行:有执行资格,有执行权
阻塞:没有执行资格,没有执行权
死亡:对象等待回收
状态转换
同步代码块
参数在同步代码块内线程安全用同一把锁(锁对象为同一个对象)
线程很多时,判断锁降低运行效率
锁对象可以使任意对象
[code]synchronized(obj){ }
同步方法
同步方法的锁对象是this静态同步方法的对象是class
[code]private synchronized void method(){ }
Lock锁
实现类:ReentrantLock- lock():获取锁(上锁)
- unlock():释放锁
一般
lock()在
try之前调用,
unlock()在
finally中调用。
- 示例
[code]private void methodWithSync(){ synchronized(this){ //code... } } private void methodWidthLock(){ Lock lock=new ReentrantLock(); lock.lock(); try{ //code... }finally{ lock.unlock(); } }
等待唤醒机制
生产者与消费者- wait():等待
再次被唤醒时从此处之后开始运行。
- notify():唤醒单个线程
- notifyAll():唤醒所有线程
上述方法由“锁”来调用
线程组
getThreadGroup():获取调用者(线程)所在线程组默认情况下,所有的线程都属于同一个组
new Thread(ThreadGroup,Runnable,NameString):在自定义组中创建线程
线程池
[code]//创建线程池 ExecutorService pool = Executor.newFixedThreadPool(2); //请求线程执行 pool.submit(new Runnable(){}); pool.submit(new Runnable(){}); pool.submit(new Callable(){}); //结束线程池 pool.shutDown();
定时器
TimerTimer():创建定时器
schedule(TimerTask task,long delay):延迟后执行
schedule(TimerTask task,long delay,long period):延迟后之情,每隔一段时间执行一次
cancle():终止任务
TimerTask
run():任务执行体
相关文章推荐
- Java回炉之IO流(一)
- Java回炉之File
- java内部类
- Java回炉之异常处理
- java内部类
- Java基础之switch语句
- 线程池——JAVA并发编程指南
- JAVA反序列化exp及使用方法
- java IO流(一)
- java 包详细介绍
- Java Servlet 工作原理
- 第三个spring冲刺第3天
- cannot be cast to javax.servlet.Servlet
- 开发维护大型 Java 项目的建议
- Java:单例模式的几种写法
- leetcode 003 Longest Substring Without Repeating Characters(java)
- java 静态方法调用非静态内部类报错
- kettle 如何使用java代码
- JAVA-抽象工厂模式
- SpringMVC中Controller和RestController