public static void main(String[] args){
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10; i++){
System.out.print(i+" ");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10; i++){
System.out.print(i+" ");
}
}
}).start();
}
输出结果如下:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Kelajuan pelaksanaan CPU terlalu pantas, dan bilangannya terlalu kecil untuk melihat perbezaannya. Jika saya, sekurang-kurangnya
Integer.MaxValue
.Jika tiada kunci penyegerakan, kedua-dua utas tidak akan mempunyai cetakan silang yang anda nyatakan Keutamaan pelaksanaan utas bergantung pada siapa yang memperoleh sumber CPU dahulu. Mari kita lihat lebih dekat pengetahuan Java multi-threading.
Bilangan tetapan adalah terlalu kecil Jika anda menetapkan 100 nombor, anda boleh melihat kesan pencetakan dua benang bersilang (persimpangan di sini bukanlah benang 1 mencetak nombor dan benang 2 mencetak nombor serta-merta, tetapi membahagikan mengikut urutan. segmen). ;CPU mengambil sumber dan melaksanakannya. Jika anda ingin melaksanakan percetakan silang, ia adalah contoh pengeluaran dan pengguna.
Terlalu pantas untuk mengeluarkan 10 nombor. Cuba tukar 10 kepada 100.
Tambahkan masa tidur urutan
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 Milik saya macam ni
Tambah Thread.sleep(1000) sebelum pernyataan output dalam dua gelung;
Benang tidak menjamin susunan pelaksanaan.
Turutan pelaksanaan utas tidak pasti Sesiapa yang merampas CPU akan melaksanakannya. Susunan sepuluh nombor tidak semestinya milik anda. Selain itu, keutamaan utas tidak dapat menjamin susunan pelaksanaan utas. Cuma benang dengan keutamaan yang lebih tinggi mempunyai kebarangkalian yang lebih tinggi untuk mendapatkan sumber CPU.
Dengan cara ini, kita dapat melihat fenomena cetakan silang yang agak jelas, tetapi sebenarnya, konkurensi bermakna kita tidak dapat mengetahui utas mana yang dilaksanakan dahulu dan utas mana
laksana kemudian, dan ini tidak semestinya akan berlaku menjadi silang. Secara berlebihan, memasukkan m, n arahan pemasangan dua utas masing-masing boleh mempunyai
C_{m+n-1}^{min(m,n)}tertib pelaksanaan peringkat faktor.