Java线程学习笔记

Java线程学习笔记

ID:38262591

大小:101.98 KB

页数:4页

时间:2019-05-25

Java线程学习笔记_第1页
Java线程学习笔记_第2页
Java线程学习笔记_第3页
Java线程学习笔记_第4页
资源描述:

《Java线程学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java线程学习笔记[lulaing2007-12]构造一个线程工作线程类需要实现Runnable接口,并实现run()方法,run()方法中即是线程的工作函数。publicWorkThreadimplementsRunnable{publicvoidrun(){//Work}}启动一个线程线程构造成功后就可以使用该线程进行工作了。运行Thread.start()即开始一只新线程工作,执行Thrad.run()同样也能执行线程,但不一样的事其并不会产生一只新线程,而是使用当前线程来执行。Runnablework=newWorkThread();Threadthread=newThrea

2、d(work);thread.start();线程工作所需要的参数或返回值,可以通过构造线程或执行线程之前置如。interrupt关键字interrutp关键字可用于中断一只线程,使用interrutp向一只线程发送一个中断消息,但线程继续执行与否并不因为其而改变。thrad.interrupt();而在线程内部应该在执行时始终判断当前工作是否被要求中断,如:publicvoidrun(){while(!Thread.currentThread().isInterrupted()){//Work}}即不为中断状态即可执行。恢复中断:Thread.interrupted();返回线程的中

3、断状态并清除中断。在线程为中断状态的情况下使线程进入睡眠会抛出InterruptedException。所以线程睡眠之前因先判断中断状态。线程线程优先级thread1.setPriority(intarg0)java线程优先级有10级,1级最低,10级最高。另外可使用优先级常量:Thread.MAX_PRIORITY10Thread.NORM_PRIORITY5Thread.MIN_PRIORITY1守护线程守护线程是为工作线程提供支持或管理的线程,其本质上同普通线并无不同,但如果一个JVM中仅有守护线程处于活动状态,那么JVM就会认为系统没有运行的必要,并终结系统。设置为守护线程:t

4、hread1.setDaemon(Booleanarg0)线程组线程组可以很方便的管理一组线程,使用如下:ThreadGrouptGroup=newThreadGroup(Stringname);Threadt=newThread(tGroup,StringtName);对线程组对象进行操作将可以统一一致的操作所有组内线程,线程组内的子线程可以在构造线程组。线程同步Java线程同步大致有三种:方式synchronized签名、进入锁、synchronized对象synchronized签名:使用synchronized方式同步较为简单,仅需要在方法头签名即可。publicsynchro

5、nizedvoidprocess(){}方法即会同步,在方法中可以使用wait()、notify()、notifyAll()方法来控制线程。进入锁:进入锁实现了接口Lock,锁具有比synchronized更强大的功能,使用如下:classSome(){privateLocklock=newReentrantLock();publicvoidprocess(){lock.lock();try{//OP}finally{lock.unlock();}}}进入锁比synchronized强大的地方在于其可以加入锁的约束条件:ConditionnotFull=lock.newConditio

6、n();Conditionfull=lock.newCondition();在锁内配合约束调试使用可以获得强大的功能。classBoundedBuffer{finalLocklock=newReentrantLock();finalConditionnotFull=lock.newCondition();finalConditionnotEmpty=lock.newCondition();finalObject[]items=newObject[100];intputptr,takeptr,count;publicvoidput(Objectx)throwsInterruptedExc

7、eption{lock.lock();try{while(count==items.length)notFull.await();items[putptr]=x;if(++putptr==items.length)putptr=0;++count;notEmpty.signal();}finally{lock.unlock();}}publicObjecttake()throwsInterruptedException{lock.lock();

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。