线程基础知识
Thread类
Thread是个表示线程的类,它有启动线程,连接线程和让线程闲置的方法
|
如何启动新的线程
(1)
建立Runnable对象(线程的任务)
public class MyRunnable implements Runnable
{
public void run()
{
//write your code here
}
}
}
}
Runnable threadJob=new MyRunnable();
(2)建立Thread对象(执行工人)并赋值Runnable(任务)
Thread myThread=new Thread(threadJob);
(3)
myThread.start();
线程的状态
新建 等待执行 执行中 阻塞
线程休眠
try
{
Thread.sleep(2000);
}
catch(InterruptedException ex)
{
ex.printStackTrace();
}
}
可以调用sleep()让所有的线程都有机会运行
线程命名
可以使用setName()来给线程命名,通常是用来出错的.
多线程
多线程可能导致的问题
读脏数据,丢失更新,死锁
同步化和对象锁
同步化的目标是保护重要的数据,但要记住,你锁住的不是数据而是存取数据的方法
每个对象都有单一的锁,单一的钥匙.
线程尝试要进入同步化过的方法时必须要取得对象的钥匙,如果已经被别的线程拿走了,那就得等.
对象就算有多个同步化过的方法,也还是只有一个锁.一旦某个线程进入该对象的同步化方法,其他线程就无法进入该对象的任何同步化方法.
参考资料
<<Head First Java>>Second Edition