jvm - Adakah objek baharu Java atom?
滿天的星座
滿天的星座 2017-06-23 09:14:17
0
4
1248
public static void main(Sting args[]){
     Object a=null;
     new Thread(){
              a=new xxx()
     }.start();

     new Thread(){
              a=new xxx()
     }.start();
}

Saya ingin bertanya, terdapat logik permulaan objek yang kompleks dalam kaedah xxx() Adakah objek dicipta oleh kata kunci baharu atom? Jika tidak, adakah terdapat masalah gangguan pemulaan objek?

滿天的星座
滿天的星座

membalas semua(4)
扔个三星炸死你

Saya tidak faham apa yang anda maksudkan, jika tekaan saya betul:

Semuanya bergantung pada logik khusus dalam kaedah pembinaan anda Lagipun, kod itu ditulis oleh manusia.

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() + "中创建A");
                Thread.sleep(2000);
                System.out.println(sdf.format(new Date()) + "--end--从线程" + Thread.currentThread().getName() + "中创建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();
    }
}

Output:

2017-06-16:11:46:43:780--begin --从线程Thread-1中创建A
2017-06-16:11:46:43:780--begin --从线程Thread-0中创建A
2017-06-16:11:46:45:786--end--从线程Thread-0中创建A
2017-06-16:11:46:45:786--end--从线程Thread-1中创建A
A is nwe.Test$A@1e6a629c
A is nwe.Test$A@27fcb25d

Contoh lain, pembina mengandungi blok penyegerakan, dan setiap utas perlu menunggu pelaksanaan urutan sebelumnya selesai sebelum ia boleh dilaksanakan.

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() + "中创建A");
                    Thread.sleep(2000);
                    System.out.println(sdf.format(new Date()) + "--end--从线程" + Thread.currentThread().getName() + "中创建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();
    }
}

Output:

2017-06-16:11:49:33:548--begin --从线程Thread-0中创建A
2017-06-16:11:49:35:549--end--从线程Thread-0中创建A
A is nwe.Test$A@717c3e10
2017-06-16:11:49:35:550--begin --从线程Thread-1中创建A
2017-06-16:11:49:37:553--end--从线程Thread-1中创建A
A is nwe.Test$A@27280786
淡淡烟草味

Adalah disyorkan untuk merujuk kepada mod singleton selamat benang

扔个三星炸死你

Tidak, sebagai contoh, jika beberapa keping logik ditulis dalam kaedah pembinaan, ia boleh terganggu apabila kaedah pembinaan dilaksanakan.

洪涛

Penerangan tentang "atomicity" adalah terlalu abstrak Apabila poster bertanyakan soalan, sebaiknya jangan berfikir bahawa setiap orang mempunyai pemahaman yang sama tentang sesuatu perkataan. Apa yang boleh saya katakan ialah pembina adalah selamat untuk setiap objek, pembina hanya akan dilaksanakan sekali dan oleh satu utas.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!