欢迎来到天天文库
浏览记录
ID:38262591
大小:101.98 KB
页数:4页
时间:2019-05-25
《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();
此文档下载收益归作者所有