在千鋒學習的第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沒有作用。