线程的命名和取得:
线程的运行每一次都会运行不同的结果,因为各线程会自行抢占资源,如果要区分线程的名称,一般情况下是在线程执行之前进行命名,而不建议在
启动之后再修改它的名称,或者是为不同的线程设置重名
对线程的名称进行操作有一下几种方法:
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 返回值 方法名(){}
过多的同步可能会造成死锁
同步操作于异步操作相比,异步操作的速度更快,但是同步操作的安全性更高,