av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

jvm - Java new 對(duì)象是否是原子性的?

瀏覽:68日期:2023-10-26 16:18:59

問(wèn)題描述

public static void main(Sting args[]){ Object a=null; new Thread(){ a=new xxx() }.start(); new Thread(){ a=new xxx() }.start();}

想問(wèn),xxx()方法里有復(fù)雜的對(duì)象初始化邏輯,new關(guān)鍵字創(chuàng)建對(duì)象,是原子性的嗎?如果不是,會(huì)不會(huì)就出現(xiàn)了對(duì)象初始化錯(cuò)亂的問(wèn)題?

問(wèn)題解答

回答1:

沒(méi)明白你的意思,如果我猜得不錯(cuò)的話:

這完全取決于你的構(gòu)造方法里面的具體的邏輯,畢竟代碼是人寫(xiě)的。

public class Test { static class A{public A(){ try {SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd:hh:mm:ss:SS');System.out.println(sdf.format(new Date()) + '--begin --從線程' + Thread.currentThread().getName() + '中創(chuàng)建A');Thread.sleep(2000);System.out.println(sdf.format(new Date()) + '--end--從線程' + Thread.currentThread().getName() + '中創(chuàng)建A'); } catch (InterruptedException e) {e.printStackTrace(); }} }public static void main(String[] args) {new Thread(new Runnable(){ @Override public void run() {System.out.println('A is ' +new A()); } }).start();new Thread(new Runnable(){ @Override public void run() {System.out.println('A is ' +new A()); } }).start(); }}

輸出:

2017-06-16:11:46:43:780--begin --從線程Thread-1中創(chuàng)建A2017-06-16:11:46:43:780--begin --從線程Thread-0中創(chuàng)建A2017-06-16:11:46:45:786--end--從線程Thread-0中創(chuàng)建A2017-06-16:11:46:45:786--end--從線程Thread-1中創(chuàng)建AA is nwe.Test$A@1e6a629cA is nwe.Test$A@27fcb25d

另一個(gè)例子,構(gòu)造器中包含同步塊,每一個(gè)線程都需要等待前面的線程執(zhí)行完成后才能執(zhí)行。

import java.text.*;import java.util.Date;public class Test { static class A{public A(){ try {synchronized (Test.class) { SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd:hh:mm:ss:SS'); System.out.println(sdf.format(new Date()) + '--begin --從線程' + Thread.currentThread().getName() + '中創(chuàng)建A'); Thread.sleep(2000); System.out.println(sdf.format(new Date()) + '--end--從線程' + Thread.currentThread().getName() + '中創(chuàng)建A');} } catch (InterruptedException e) {e.printStackTrace(); }} }public static void main(String[] args) {new Thread(new Runnable(){ @Override public void run() {System.out.println('A is ' +new A()); } }).start();new Thread(new Runnable(){ @Override public void run() {System.out.println('A is ' +new A()); } }).start(); }}

輸出:

2017-06-16:11:49:33:548--begin --從線程Thread-0中創(chuàng)建A2017-06-16:11:49:35:549--end--從線程Thread-0中創(chuàng)建AA is nwe.Test$A@717c3e102017-06-16:11:49:35:550--begin --從線程Thread-1中創(chuàng)建A2017-06-16:11:49:37:553--end--從線程Thread-1中創(chuàng)建AA is nwe.Test$A@27280786回答2:

建議參考線程安全的單例模式

回答3:

不具有,比如構(gòu)造方法中寫(xiě)了多條邏輯,在執(zhí)行構(gòu)造方法時(shí),是可以中斷的。

回答4:

“原子性”這種描述太抽象,樓主提問(wèn)的時(shí)候最好不要認(rèn)為所有人對(duì)某個(gè)詞的認(rèn)識(shí)都完全一樣。我只能說(shuō)構(gòu)造方法是線程安全的,對(duì)于每一個(gè)對(duì)象,構(gòu)造方法只會(huì)被執(zhí)行一次,只會(huì)被一個(gè)線程執(zhí)行。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 久久大陆| 欧美激情一区二区 | 欧美日韩国产欧美 | 91视频www.| 黄色一级大片在线免费看产 | 成人网av| 在线免费激情视频 | 国产三级精品三级在线观看四季网 | 国产精品一区免费 | 亚洲视频中文字幕 | 99热在这里只有精品 | 人人叉 | 老司机免费视频 | 高清久久久 | 欧美亚洲在线视频 | 激情亚洲 | 九九综合 | 亚洲人在线播放 | 欧美 日韩精品 | 亚洲在线久久 | 天天操妹子 | 美女久久久久 | 欧美一区二区成人 | 国产三级精品三级在线观看四季网 | 日韩精品一区二区三区高清免费 | 精品久久99 | 国产精品欧美一区二区三区不卡 | 成人一区二区三区 | 国产一区二区在线播放 | 瑟瑟视频在线看 | 欧区一欧区二欧区三免费 | 国产专区在线 | 91福利影院| 国户精品久久久久久久久久久不卡 | 日韩精品在线看 | 国产精品国产精品国产专区不卡 | 手机在线观看 | 国产在线一 | 国产激情网站 | 久久久久久久久久久蜜桃 | 一区二区久久精品 |