當前位置:首頁 » 編程語言 » java多線程變數

java多線程變數

發布時間: 2024-06-28 13:28:38

java多線程 全局變數

你這個全局變數是static變數嗎?必須是static才是全局的

然後要保證這個調用全局變數的類和那個線程是在同一個進程

然後要考慮執行的順序,保證賦值的線程先執行

② java多線程共享變數

兩個線程同時獲取變數,
獲取之後.第一個線程++操作,然後進入睡眠.
這時,第二個線程,也獲取到了,做--操作.睡眠.
第一個線程醒來列印的是做過2次運算的數據(++,--)所以是0
第二線程也一樣.
這涉及到多線程安全問題.

③ 基礎Java題 試編寫一個多線程的程序:啟動4個線程。其中兩個循環10次,每次將某全局變數加1,另兩個循環1

publicclassDay18_A{
publicstaticvoidmain(String[]args)throwsInterruptedException{
Recounrec=Recoun.getRec();
Thread[]枯蘆trr=newThread[4];
for(inti=0;i<4;i++){
trr[i]=newThread(newNumberTest(rec,i),"線程"+(i+1)+": ");
}
for(Threadthread:trr){
thread.start();
}
for(Threadthread:trr)沒純帶{
thread.join();
}
System.out.println("所有線程結束褲虧查看結果:"+rec.getCount());
}
}

{
privateRecounre;
privateintn;
NumberTest(Recounr,inti){
this.re=r;
this.n=i;
}
publicvoidrun(){
for(inti=0;i<10;i++){
re.method(n);
}
}
}
classRecoun{
privateintcount=0;
privateRecoun(){
}
privatestaticfinalRecounrec=newRecoun();
publicstaticRecoungetRec(){
returnrec;
}
publicsynchronizedvoidmethod(inti){
if(i%2==0){
System.out.println(Thread.currentThread().getName()+(count++));
}else{
System.out.println(Thread.currentThread().getName()+(count--));
}
}
publicsynchronizedintgetCount(){
returncount;
}
}

④ Java兩個線程操作一個變數,為什麼變數的值會不一樣呢

如樓下所說,線程同步的問題。
除了了使用synchronized。

還可以使用原子類型,例如AtomicInteger,參見

http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html

⑤ java 多線程 同時操作一個變數 高分懸賞

ArrayList不是線程安全的野遲 所以 synchronized 必須有 這一點是關鍵,其他的都是浮雲。還有 兩個線程sleep一會更好 否則 這個猛喊跟死循環一樣了 機器受不了啊!。
public class Test {

public static List<String> list = new ArrayList<String>();

public static void main(String[] args) {
myThreadClass1 thread1 = new myThreadClass1();
myThreadClass2 thread2 = new myThreadClass2();
Thread t1 = new Thread(thread1);
Thread t2 = new Thread(thread2);
t1.start();
t2.start();
}
}

class myThreadClass1 implements Runnable {
public void run() {
while (true) {//枝脊野 這就不要寫1 ==1 了
synchronized (Test.class) {
System.out.println("add!!!!");
Test.list.add("123");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class myThreadClass2 implements Runnable {
public void run() {
while (true) {
synchronized (Test.class) {
Iterator it = Test.list.iterator();
// 循環里remove會出沖突異常的
List list2 = new ArrayList();
while (it.hasNext()) {
Object obj = it.next();
System.out.println("remove:" + obj);
list2.add(obj);
}
// you can do anything with list2
// avoid java.util.
Test.list.clear();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

⑥ java多線程有幾種實現方法,都是什麼同步有幾種實現方法,都是什麼

java中多線程的實現方法有兩種:1.直接繼承thread類;2.實現runnable介面;同步的實現方法有五種:1.同步方法;2.同步代碼塊;3.使用特殊域變數(volatile)實現線程同步;4.使用重入鎖實現線程同步;5.使用局部變數實現線程同步

其中多線程實現過程中需注意重寫或者覆蓋run()方法,而對於同步的實現方法中使用較常使用的是利用synchronized編寫同步方法和代碼塊。

熱點內容
預設存儲器 發布:2024-11-26 16:47:38 瀏覽:13
如何打開雲伺服器的窗口 發布:2024-11-26 16:42:37 瀏覽:843
怎麼自學編程入門 發布:2024-11-26 16:40:58 瀏覽:759
夢幻西遊網頁版腳本輔助神器 發布:2024-11-26 16:39:18 瀏覽:66
登陸社保賬號密碼是什麼 發布:2024-11-26 16:23:03 瀏覽:896
優盾加密軟體 發布:2024-11-26 16:15:52 瀏覽:655
熱血傳奇手游免費輔助腳本 發布:2024-11-26 15:59:03 瀏覽:220
安卓王者榮耀怎麼設置回復血量 發布:2024-11-26 15:58:58 瀏覽:533
汽車空調壓縮機軸承 發布:2024-11-26 15:58:56 瀏覽:960
c語言中53 發布:2024-11-26 15:56:36 瀏覽:281