方法體應該是隨著類建立的,因此應該在**區
因此執行緒物件訪問這個方法體的時候,每乙個執行緒物件都是乙個cpu 都會紀錄當前執行到那裡,例如兩個執行緒物件執行下列行數
public void runa()
for(int i=0;i<100;i++)
system.out.println(i.tostring());
執行緒物件a,b 同時進行執行,a執行到 int i=0 並不會影響到b 執行 int i=0 也就是說 a執行過了 i++,並不會讓 b的i 變成1;因為他們都有程式執行時候的標記,記錄上一次執行時候的變數狀態,不會混亂。
但是對於公共變數例如 有乙個類的全域性變數
public static int count;
public void runa()
for(int i=0;i<100;i++)
count++;
system.out.println(i.tostring());
這裡 count 就需要進行執行緒同步,因為這個變數是全域性的 誰都可以去更改,如果想不影響到自己,那麼就要索住它。
分析執行緒是否需要同步,就要看是否有多個執行緒會訪問到公共資源。
關於java多執行緒
執行緒是程序的最小單元,同一程序中有多個執行緒 執行緒的互動有 互斥與同步 互斥 系統中的多個執行緒必然要共享某種系統資源,如共享cpu,共享i o裝置,所謂間接相互制約即源於這種資源共享,印表機就是最好的例子,執行緒a在使用印表機時,其它執行緒都要等待,這就是互斥 執行緒a和執行緒b互斥訪問某個資...
Java多執行緒排程方法
1 sleep 方法 休眠 執行緒休眠的方法是 thread.sleep long millis thread.sleep long millis,int nanos 執行緒休眠的目的是使執行緒讓出cpu的最簡單的做法之一,執行緒休眠時候,會將cpu資源交給其他執行緒,以便能輪換執行,當休眠一定時間...
java多執行緒interrupt 方法
執行緒a與執行緒b,在業務中,常常因為執行緒之前的業務關係,需要互相影響,甚至是a去中斷b,thread.interrupt 提供了這樣乙個操作。例子 package com.threadtest public class threadinterruptedtest catch interrupte...