千锋逆战班,多线程

在千锋学习的第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没有作用。

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