国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java 線程詳解及線程與進(jìn)程的區(qū)別

java 線程詳解及線程與進(jìn)程的區(qū)別

2020-07-25 14:50wangchenyang Java教程

這篇文章主要介紹了java 線程詳解及線程與進(jìn)程的區(qū)別的相關(guān)資料,網(wǎng)上關(guān)于java 線程的資料很多,對(duì)于進(jìn)程的資料很是,這里就整理下,需要的朋友可以參考下

java  線程詳解及線程與進(jìn)程的區(qū)別

1.進(jìn)程與線程

   每個(gè)進(jìn)程都獨(dú)享一塊內(nèi)存空間,一個(gè)應(yīng)用程序可以同時(shí)啟動(dòng)多個(gè)進(jìn)程。比如IE瀏覽器,打開一個(gè)Ie瀏覽器就相當(dāng)于啟動(dòng)了一個(gè)進(jìn)程。

   線程指進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程可以包含多個(gè)線程。

   每個(gè)進(jìn)程都需要操作系統(tǒng)為其分配獨(dú)立的內(nèi)存空間,而同一個(gè)進(jìn)程中的多個(gè)線程共享這塊空間,即共享內(nèi)存等資源。

   每次調(diào)用java.exe的時(shí)候,操作系統(tǒng)都會(huì)啟動(dòng)一個(gè)Java虛擬機(jī)進(jìn)程,當(dāng)啟動(dòng)Java虛擬機(jī)進(jìn)程時(shí)候,Java虛擬機(jī)都會(huì)創(chuàng)建一個(gè)主線程,該線程會(huì)從程序入口main方法開始執(zhí)行。

  Java虛擬機(jī)每啟動(dòng)一個(gè)線程,就給會(huì)給該線程分配一個(gè)線程方法棧,用來存放相關(guān)信息(比如局部變量等),線程就在這個(gè)棧上運(yùn)行。所以Java對(duì)象中的局部變量都是線程安全的,但實(shí)例變量及類變量由于不是保存在棧中,所以不是線程安全的。

  進(jìn)程有三種狀態(tài):就緒、執(zhí)行、阻塞。

java 線程詳解及線程與進(jìn)程的區(qū)別

2.線程創(chuàng)建方式

   Runnable方式:(此種方式靈活,推薦使用)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Thread02 implements Runnable {
 
  public static void main(String[] args) {
    Runnable r = new <strong>Thread02</strong>();
    Thread t1 = new Thread(<strong>r</strong>, "t1");
    /**
     *   Thread源碼
     *   public Thread(Runnable target, String name) {
          init(null, target, name, 0);
             }
     */
    Thread t2 = new Thread(r, "t2");
    t1.start(); // 啟動(dòng)線程t1,處于就緒狀態(tài),等待cpu
    t2.start(); // 啟動(dòng)線程t2,處于就緒狀態(tài),等待cpu
    t1.run(); // 主線程main調(diào)用對(duì)象t1的run方法
  }
 
  public void run() {
    System.out.println("thread's name is "
        + Thread.currentThread().getName());
  }
 
}

運(yùn)行結(jié)果可能是:

?
1
2
3
thread's name is t1
thread's name is main
thread's name is t2

Thead方式

?
1
2
3
4
5
6
7
8
9
10
11
12
public class Thread03 extends Thread {
 
  public static void main(String[] args) {
    Thread03 t1 = new <strong>Thread03</strong>();   //不注意的情況下寫成了Thread t1=new Thread()  注:Thread03此時(shí)就是一個(gè)線程了
    t1.start();
  }
 
  public void run() {
    System.out.println("thread's name is "
        + Thread.currentThread().getName());
  }
}

運(yùn)行結(jié)果:thread's name is Thread-0

注意:每次程序運(yùn)行時(shí)除了自定義的線程外還有一個(gè)main線程。

 綜合:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class Thread01 {
  public static void main(String[] args) {
 
    Thread thread=new Thread();
    thread.start();//真正起作用 的是run()
    /**而Thread中的run
     * public void run() {
      if (target != null) {
        target.run();
      }
      }
      所以自己創(chuàng)建的線程要重寫run方法,把要執(zhí)行的內(nèi)容放到run()中,所以要實(shí)現(xiàn)接口或繼承進(jìn)而產(chǎn)生子類
     */
    
    //創(chuàng)建線程的方式1 thread子類方式(繼承)
    Thread thread1=new Thread(){
      public void run() {
        while(true){
          try {
            Thread.sleep(500);//休息500毫秒
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          //Thread.currentThread()得到當(dāng)前線程
          System.out.println("線程1的名字是 "+Thread.currentThread().getName());
        }
      }
    };
//    thread1.start(); //不寫  線程無法啟動(dòng)
    
    
    //創(chuàng)建線程的方式2 runnable方式(實(shí)現(xiàn)) 推薦使用
    Thread thread2=new Thread(new Runnable(){
 
      public void run() {
 
        while(true){
          try {
            Thread.sleep(300);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          System.out.println("thread2'name is "+Thread.currentThread().getName());
          
        }
      }});
//    thread2.start();
    
    //執(zhí)行的是thread
    new Thread(new Runnable(){
      public void run() {
        System.out.println("runnable "+Thread.currentThread().getName());
      }}){
      public void run() { //子類中的run方法覆蓋父類中的run方法,這樣就不會(huì)執(zhí)行runnable
        System.out.println("thread "+Thread.currentThread().getName());
      }
    }.start();
  }
  /***
   * 在單個(gè)cpu中執(zhí)行多線程很有可能降低執(zhí)行效率而不是提高 一個(gè)人在不同地方做同一件事情
   */
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

原文鏈接:http://www.cnblogs.com/wangchenyang/archive/2011/08/27/2155823.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品无码永久免费888 | 草樱av | 国产成人久久一区二区三区 | 成人高清视频在线观看 | 国产综合精品一区二区三区 | 久久久久久久久久久免费视频 | 国产男女做爰免费网站 | 黄色国产 | 日本成人片网站 | 日美毛片 | 九一精品 | 精品亚洲永久免费精品 | 国产欧美一区二区三区在线看 | 久久99精品久久久 | 精品黄色 | 久久性网站| 国产视频一区二区在线 | 国产免费自拍av | 特黄特色大片免费视频观看 | 精品视频网站 | 精品国产欧美一区二区三区成人 | 久久精品久久久久久 | 中文字幕在线一区二区三区 | 久久精品2019中文字幕 | 日本v在线观看 | 国产精品三级久久久久久电影 | 91色乱码一区二区三区 | 成人亚洲| a级在线免费 | 欧美一区二区三区视频 | 久久91精品 | www久 | 亚洲电影一区 | 欧美一级欧美三级在线观看 | 欧美一区二区三区免费 | 亚洲欧美综合乱码精品成人网 | 日韩欧美在线一区 | 免费看少妇高潮一级毛片特黄 | 在线中文字幕视频 | 中文字幕一区二区三区四区五区 | 久久久久久国产免费 |