Thread
2016-02-27 11:57
211 查看
1、java有10个优先级,xp有7个,solaris则有2的31次幂个。一般建议不设置优先级,如果设置优先级的话,建议设置
Thread.MAX_PRIORITY;
Thread.MIN_PRIORITY;
Thread.NORM_PRIORITY;这三个优先级
1、任意时刻可以调用Thread.setPriority()来设置线程的优先级,会影响线程的调度频率。
2、Thread.getPriority()
3、线程之间异常是不能扩散的,当一个线程最后没有捕获异常,线程扩散到run()之后该线程就结束了。所以需要设置一个线程处理器来进行回收资源。
线程调用异常handler的顺序是这样的:1、本线程的异常处理器 2、如果1没有调线程所在组的异常处理器 3、2没有的话调用Thread的default异常处理器。
4、Thread.isDeamon(),Thread.setDeamon() 守护线程,当非守护线程都结束的时候,守护线程自动结束。
后台线程显示创建的所有线程默认都是daemon线程。而且daemon的run没有必要执行finally子句就会结束。
当非daemon线程全部结束完成之后,daemon线程会立刻终止,不执行finally子句。
5、Thread.isAlive判断线程是否结束
6、Thread.join()等待线程结束,也就是isAlive()返回false本线程才继续。
Thread.join(时间)
可以被中断
7、Thread.yield()建议调度下一个线程
8、不要过多的追究线程组,不值得。
9、一般将属性设置为private。
10、synchronized加在方法上面实际上给this加的锁,注意,一个线程可以不断的获得一个锁,只要本线程已经获得了锁,然后再请求的时候还是能获得,JVM会对锁进行计数。
11、class对象也能加锁,是通过在static方法上加synchorized。
12、ReentrantLock能提供更细粒度的锁操作方式,同时提供了很多的特性,如设置加锁的时间,设置可被中断。一般不使用Lock,直接使用synchorized,在性能调优的时候才使用Lock。
Thread.MAX_PRIORITY;
Thread.MIN_PRIORITY;
Thread.NORM_PRIORITY;这三个优先级
1、任意时刻可以调用Thread.setPriority()来设置线程的优先级,会影响线程的调度频率。
2、Thread.getPriority()
3、线程之间异常是不能扩散的,当一个线程最后没有捕获异常,线程扩散到run()之后该线程就结束了。所以需要设置一个线程处理器来进行回收资源。
线程调用异常handler的顺序是这样的:1、本线程的异常处理器 2、如果1没有调线程所在组的异常处理器 3、2没有的话调用Thread的default异常处理器。
4、Thread.isDeamon(),Thread.setDeamon() 守护线程,当非守护线程都结束的时候,守护线程自动结束。
后台线程显示创建的所有线程默认都是daemon线程。而且daemon的run没有必要执行finally子句就会结束。
当非daemon线程全部结束完成之后,daemon线程会立刻终止,不执行finally子句。
5、Thread.isAlive判断线程是否结束
6、Thread.join()等待线程结束,也就是isAlive()返回false本线程才继续。
Thread.join(时间)
可以被中断
7、Thread.yield()建议调度下一个线程
8、不要过多的追究线程组,不值得。
9、一般将属性设置为private。
10、synchronized加在方法上面实际上给this加的锁,注意,一个线程可以不断的获得一个锁,只要本线程已经获得了锁,然后再请求的时候还是能获得,JVM会对锁进行计数。
11、class对象也能加锁,是通过在static方法上加synchorized。
12、ReentrantLock能提供更细粒度的锁操作方式,同时提供了很多的特性,如设置加锁的时间,设置可被中断。一般不使用Lock,直接使用synchorized,在性能调优的时候才使用Lock。
相关文章推荐
- Softmax Regression
- 《笨办法学Python》 第46课手记
- 企业创新文化与等级观念
- Sublime text3使用中出现的常见问题
- Boost MPI send and recv
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- 【leetcode】【15】3Sum
- Android中JNI的使用之HelloWorld
- Android开发中出现的问题及解决(二)
- iOS NSString 没有去除首尾空格,换行符,空字符--导致UIlabel不能正确计算换行后的动态高度
- PHP常见面试题(简答部分二)
- Android即时通讯--仿QQ即时聊天:(三)核心代码抽取与登录逻辑
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- day03—html之页面布局
- java数据类型与转义字符的讲解
- 用socket编程实现的简单的聊天软件
- PDF阅读器系列之--MuPDF源码分析过程(一)
- property参数strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- 银河英雄传说 VIJOS 1443 并查集
- iOS 根据百分比获得渐进色 由绿到红