執行緒間共享資料

2021-09-19 10:27:19 字數 3812 閱讀 3814

首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常風趣幽默,還時不時有內涵段子,像看**一樣,哈哈~我正在學習中,覺得太牛了,所以分享給大家!點這裡可以跳轉到教程

一、每個執行緒執行的**相同

若每個執行緒執行的**相同,共享資料就比較方便。可以使用同乙個runnable物件,這個runnable物件中就有那個共享資料。

public class multithreadsharedata1

}class saletickets implements runnable

}publicsynchronizedvoid sale()

}saletickets這個物件中就有需要共享的資料allticketcount,兩個執行緒使用同乙個saletickets,就可以共享allticketcount了。

二、每個執行緒執行的**不相同

方法1:將需要共享的資料封裝成乙個物件,將該物件傳給執行不同**的runnable物件。

方法2:將這些執行不同**的runnable物件作為內部類。

看例子:有4個執行緒,其中有2個執行緒對每次對j+1,有2個執行緒對每次對j-1。加減操作無順序。

方法1:

public class multithreadsharedata3}}

class numberinfo

public int getnumber()

public void setnumber(int number)

public void add()

public void minus()

}// 增操作

class numberinfoadd implements runnable

public void run()

public void add()}}

// 減操作

class numberinfominus implements runnable

public void run()

public void minus()}}

方法2:

public class multithreadsharedata4

}public synchronized void add()

public synchronized void minus()

// 增

class numberinfoadd implements runnable

}// 減

class numberinfominus implements runnable}}

執行結果可能是:

增執行緒--數值:11

增執行緒--數值:12

減執行緒--數值:11

減執行緒--數值:10

執行結果也可能是:

增執行緒--數值:11

減執行緒--數值:10

減執行緒--數值:9

增執行緒--數值:10

其實執行緒執行相同**也可以按照這些方法來做,看乙個方法1:

public class multithreadsharedata2

}class ticketinfo

public int getallticketcount()

public void setallticketcount(int allticketcount)

public void sale()

}class saletickets2 implements runnable

public void run()

}public void sale()}}

瀏覽人工智慧教程

一、每個執行緒執行的**相同

若每個執行緒執行的**相同,共享資料就比較方便。可以使用同乙個runnable物件,這個runnable物件中就有那個共享資料。

public class multithreadsharedata1

}class saletickets implements runnable

}publicsynchronizedvoid sale()

}saletickets這個物件中就有需要共享的資料allticketcount,兩個執行緒使用同乙個saletickets,就可以共享allticketcount了。

二、每個執行緒執行的**不相同

方法1:將需要共享的資料封裝成乙個物件,將該物件傳給執行不同**的runnable物件。

方法2:將這些執行不同**的runnable物件作為內部類。

看例子:有4個執行緒,其中有2個執行緒對每次對j+1,有2個執行緒對每次對j-1。加減操作無順序。

方法1:

public class multithreadsharedata3}}

class numberinfo

public int getnumber()

public void setnumber(int number)

public void add()

public void minus()

}// 增操作

class numberinfoadd implements runnable

public void run()

public void add()}}

// 減操作

class numberinfominus implements runnable

public void run()

public void minus()}}

方法2:

public class multithreadsharedata4

}public synchronized void add()

public synchronized void minus()

// 增

class numberinfoadd implements runnable

}// 減

class numberinfominus implements runnable}}

執行結果可能是:

增執行緒--數值:11

增執行緒--數值:12

減執行緒--數值:11

減執行緒--數值:10

執行結果也可能是:

增執行緒--數值:11

減執行緒--數值:10

減執行緒--數值:9

增執行緒--數值:10

其實執行緒執行相同**也可以按照這些方法來做,看乙個方法1:

public class multithreadsharedata2

}class ticketinfo

public int getallticketcount()

public void setallticketcount(int allticketcount)

public void sale()

}class saletickets2 implements runnable

public void run()

}public void sale()}}

執行緒間的資料共享

執行緒間的資料共享可以通過兩種方式 通過thread子類建立程序的方法 通過runnable介面實現程序之間的共享 比較這兩種實現程序共享的區別 thread子類建立程序 package practice4 public class threadsale extends thread public ...

Qt學習 執行緒間共享資料

qt執行緒間共享資料主要有兩種方式 第一種辦法在各個程式語言都使用普遍,而第二種方式倒是qt的特有方式,下面主要學習一下這種方式 c sharp view plain copy ifndef textdevice h define textdevice h include include inclu...

詳解 Qt 執行緒間共享資料

使用共享記憶體。即使用乙個兩個執行緒都能夠共享的變數 如全域性變數 這樣兩個執行緒都能夠訪問和修改該變數,從而達到共享資料的目的。qt 執行緒間共享資料是本文介紹的內容,多的不說,先來啃內容。qt執行緒間共享資料主要有兩種方式 使用共享記憶體。即使用乙個兩個執行緒都能夠共享的變數 如全域性變數 這樣...