Java学习打卡Day28

知识总结

进程

  1. 概念:程序是静止的,只有真正运行时的程序,才被称为进程
  2. 单核CPU在任何时间点上,只能运行一个进程;宏观并行,微观串行

线程

  1. 概念:又称轻量级的进程(Light Weight Process)程序中的顺序控制流程,同时也是CPU的基本调度单位。
  2. 进程可由多个线程组成,彼此间完成不同的工作,交替执行,称为多线程。
  3. Java虚拟机是一个进程,当默认包含主线程(main)可通过代码创建多个独立线程,与Main并发执行。
线程的组成
  1. CPU时间片:操作系统会为每个线程分配执行时间
  2. 运行数据:
    堆空间,存储线程需使用的对象,多个线程可以共享堆中的对象;栈空间,存储线程需使用的局部变量,每个线程都拥有独立栈
  3. 线程的逻辑代码

创建线程

  1. 继承类extends Thread、覆盖run()方法、创建子类对象、调用Start()方法
  2. 实现Runnable接口、覆盖run()方法、创建实现类对象、创建线程对象、调用Start()方法

常用方法

  1. 休眠:public static void sleep(long millis):当前线程主动休眠millis毫秒
  2. 放弃:public static void yield();当前线程主动放弃时间片,回到就绪庄涛,竞争下一次时间片
  3. 结合:public final void join();允许其他线程加入到当前线程中
  4. 同步代码块:synchronized(临界资源对象){//对临界资源对象加锁
    //代码(原子操作)
    }

每日练习

在这里插入图片描述
答:单核CPU在任何时间点上,只能运行一个进程;宏观并行,微观串行,进程可由多个线程组成,彼此间完成不同的工作,交替执行
在这里插入图片描述
在这里插入图片描述
答:C
在这里插入图片描述
在这里插入图片描述
答:C
在这里插入图片描述
答:A
在这里插入图片描述
答:

public class TestT5 {

	public static void main(String[] args) {
		Number n1 = new Number();
		BigChar c1 = new BigChar();
		Thread t1 = new Thread(c1);
		n1.start();
		t1.start();

	}

}
class Number extends Thread{
	int j = 0;
	public void run(){
		while(true){
		for(int i = 1 ; i <= 26 ; i++){
				j++;
				System.out.println(i + "-" + j);
				if(j == 100)
					return;
			}
		}
	}
}
class BigChar implements Runnable{
	int j = 0;
	public void run(){
		while(true){
		for(int i = 65 ; i <= 90; i++){
				j++;
				System.out.println((char)i + "-" + j);
				if(j == 100)
					return;
			}
		}
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
答:加上synchronized之后,同一时间只有一个运行,否则交替执行
在这里插入图片描述
在这里插入图片描述
答:C

发布了33 篇原创文章 · 获赞 3 · 访问量 906

猜你喜欢

转载自blog.csdn.net/qq_44952731/article/details/104807388