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