1吨枉、了解進(jìn)程與線程的概念。
(1)進(jìn)程就是一個(gè)正在執(zhí)行中的程序(例如:qq)哄芜。
(2)每一個(gè)進(jìn)程執(zhí)行都有一個(gè)執(zhí)行順序貌亭,該順序是個(gè)執(zhí)行路徑
,或者叫一個(gè)控制單元
(3)線程就是進(jìn)程中一個(gè)獨(dú)立的控制單元认臊,就是一條執(zhí)行路徑圃庭。
(4)線程控制著進(jìn)程的執(zhí)行。
(5)java vm 啟動的時(shí)候會有一個(gè)進(jìn)程java.exe失晴,該進(jìn)程中至少有一個(gè)線程負(fù)責(zé)java程序的執(zhí)行剧腻,
而且這個(gè)線程運(yùn)行的代碼存在于main方法中,該線程稱之為主線程涂屁。
(5)jvm是多線程的恕酸,垃圾回收、運(yùn)行主線程等等
(6)在某一時(shí)刻胯陋,只能有一個(gè)程序在運(yùn)行(多核除外)蕊温。
(7)多線程隨機(jī)性,誰搶到誰執(zhí)行遏乔,至于執(zhí)行多長义矛,cpu來決定
2、java創(chuàng)建線程的兩種方式:繼承Thread與實(shí)現(xiàn)Runnble
(1)今天先說Thread盟萨,見下面例子:
class DemoThread extends Thread {
????public DemoThread(String name) {
????????super(name);
????}
????public void run() {//重寫Thread類的run方法凉翻,把自己需要實(shí)現(xiàn)的東西,寫進(jìn)去
????????System.out.println("劉峰 run");
????????for(int i = 0 ; i < 500; i++) {
????????????System.out.println(Thread.currentThread().getName()+"------"+i);
????????}
????}
}
class Test {
????public static void main(String[] args) {
????????DemoThreadd = newDemoThread1("liufeng");
????????DemoThreadd = newDemoThread2("劉峰");
????????d1.start();
????????d2.start();
????}
}
(2)run方法存儲的是線程要執(zhí)行的代碼
(3)啟動線程捻激,調(diào)用start方法(調(diào)用run方法制轰,不是啟動線程,只是方法調(diào)用)
(4)static Thread currentThread():獲取正在運(yùn)行的線程的線程對象(這是Thread類的靜態(tài)方法)
(5)main也是一個(gè)線程胞谭,是主線程垃杖,由jvm調(diào)用
(6)線程的生命周期:
從新浪博客搬過來的:http://blog.sina.com.cn/s/blog_818367a30102uwyc.html