千鋒逆戰班,多線程

在千鋒學習的第28天
努力努力在努力,堅持堅持再堅持!!!加油
今天我學習了多線程的初級內容,多線程的定義,線程的創建以及線程安全

1.一個單CPU的機器,如何同時執行多個線程?請簡述其原理。
答案:
多個線程是以併發方式運行的,因爲只有一個CPU,各個任務分別佔用一段時間,再切換到其他任務,等到下一次CPU使用權(cpu分配的時間片)是再次執行未完成的線程。

在這裏插入圖片描述
答案:C 因爲單純的調用run方法和調用普通方法一個樣

在這裏插入圖片描述

答案爲C

在這裏插入圖片描述答案爲A,因爲要聲明sleep出現的錯誤

在這裏插入圖片描述

package ques5;

import java.util.Random;

public class Test5 {

	public static void main(String[] args) {
		NumberThread numt = new NumberThread();
		
		Thread ch = new Thread(new CharRandom());
		
		numt.start();
		ch.start();
		
		
	}

}


class NumberThread extends Thread{
	
	public void run(){
		Random random = new Random();
		
		for (int i = 0; i < 100; i++) {
			int n = random.nextInt(26)+1;
			System.out.println(n);
			
		}
		
	}
	
}


class CharRandom implements Runnable{

	@Override
	public void run() {
		Random random = new Random();
		
		for (int i = 0; i < 100; i++) {
			int n = random.nextInt(26)+65;
			System.out.println((char)n);
		}
		
		
	}
	

	
	
}

在這裏插入圖片描述

加上synchronized他會讓lock對象給線程上個鎖,一個對象只有一個鎖,在這個線程結束之前,另一個線程要在外面等着正在執行內部邏輯代碼的線程釋放鎖,釋放了纔能有機會獲取鎖進入synchronized內部執行
不加的話###和$$$就會不按順序打印出

在這裏插入圖片描述
代碼編譯錯誤,要對MyThread加上個有參構造,然後是選C 多個線程因爲要對臨界資源(多個線程共享的資源)操作,但是這裏的data不是同一個對象,不是這兩個線程的共享資源所以加synthronized沒有作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章