线程笔记

线程的命名和取得:
 线程的运行每一次都会运行不同的结果,因为各线程会自行抢占资源,如果要区分线程的名称,一般情况下是在线程执行之前进行命名,而不建议在
启动之后再修改它的名称,或者是为不同的线程设置重名
 对线程的名称进行操作有一下几种方法:
 Thread(Runnable target, String name)
 public final void setName(String name)设置线程名称
 public final String getName()返回线程名称
 public static Thread currentThread()返回对当前正在执行的线程对象的引用
 public final void setPriority(int newPriority)更改线程的优先级。
 
 一般情况下,对线程的操作基本都是在Thread类里面
 
 对于线程名字的操作,会有以下问题:
 如果是实现的Runnable接口,但是对名称操作的方法却是在Thread类里面,那么如何取得线程并修改名称呢?
 
 线程在抢占资源的时候在任何一个时间点有且只有一个线程在运行,所以可以取得运行时候的线程对象——>
 Thread类里面提供了一个currentThread()方法,返回对当前正在执行的线程对象的引用,然后就可以执行操作了。
 
 
 线程的休眠:所谓的线程休眠就是样线程的执行速度变得缓慢一点。
 public static void sleep(long millis,int nanos)throws InterruptedException
 
 
 线程同步与死锁:
 死锁是由于存在多个线程同步时,某种逻辑错误造成的问题,并且不是简单情况下就会出现的,它是突发的
 
 多个线程访问同一个资源时需要考虑到哪些情况?会造成什么问题?
  在处理多线程访问统一资源的时候,要注意同步问题,可以通过同步方法或者同步代码块来解决
  同步方法:synchronized(锁定对象){代码块}
  同步代码块:public synchronized 返回值 方法名(){}
  过多的同步可能会造成死锁
  
  
  同步操作于异步操作相比,异步操作的速度更快,但是同步操作的安全性更高,
                        
                 
 
 
 

posted @ 2016-05-09 16:34  奈水犹寒  阅读(271)  评论(0编辑  收藏  举报