多线程的运行状态是不确定的,所以对于多线程操作必须有一个明确标识出线程对象的信息。在Thread类中提供如下的线程的名称方法:
public Thread(Runnable target,String name) //创建线程的时候设置名称
public final synchronized void setName(String name) //设置线程的名称
public final String getName() //取得线程的名字
而在没有设置线程名字的话,则或自动分配一个线程的名字,这块需要注意的是,线程的名字如果要设置清楚,一般设置后不要修改。
class MyThread implements Runnable{
public void run() {
System.out.println("当前线程:"+Thread.currentThread().getName());
}
}
public class Thread5 {
public static void main(String[] args) {
MyThread mt = new MyThread();
mt.run();
new Thread(mt).start();
}
}
通过上边的程序我们得出:主方法本身就是一个线程,所有的线程都是通过主线程创建并启动的。
我们看一下下边的这张图:
sleep方法:线程休眠,让线程暂缓执行一下,等到了预计时间之后再恢复执行。但是要强调,sleep方法不会释放锁。
wait()方法和notity()方法:
wait方法和notity()方法是一般是组队出现的。
wait()方法是使线程等待,这种等待抱着等不到资源就不停止运行的态度,可以简单是称呼这个方法死等,即痴汉方法。
notity()方法 必须使用在同步代码块,同步方法中。一般和wait()成对出现,来结束wait方法的死等。