Java多线程(一)

多线程(一)

一、什么是进程

进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。

二、单进程操作系统和多进程操作系统的区别

  • 单进程操作系统:dos(一瞬间只能执行一个任务)
  • 多进程单用户操作系统:Windows(一瞬间只能执行多个任务)
  • 多进程多用户操作系统:Linux(一瞬间只能执行多个任务)

三、现在的多核CPU是否可以让系统在同一个时刻可以执行多个任务吗?

理论上是可以的

四、什么是线程,理解线程和进程的关系

什么是线程?

线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源

一个进程 可以有 多个线程:各个线程都有不同的分工

理解线程和进程的关系

进程 与 进程 之间的关系:进程之间的内存空间和系统资源是独立的

同一个进程里的多条线程 :线程之间的内存空间和系统资源是共享的

进程里:可以有一条或一条以上的线程

进程里只有一条线程的情况下,这条线程就叫做主线程

进程里有多条线程的情况下,只有一条线程叫做主线程

Ps:线程是在进程里的,他们是包含关系

五、我们应用的软件有哪些是多线程的应用?

都是

六、Java中,如何来编写多线程的应用程序?有哪些方法?

线程类

创建MyThread类,继承Thread,重写run方法

public class Test01 {
	public static void main(String[] args) {	
		//创建线程的对象
		MyThread t = new MyThread();
		//启动线程
		t.start();
	}
}
//线程类
class MyThread extends Thread{
	//当前线程抢到cpu资源后,就会执行run方法
	@Override
	public void run() {
		System.out.println("当前线程抢到资源了");
	}
}

任务类

创建Task类,实现Runnable接口中的run方法

public class Test01 {
	public static void main(String[] args) {
		Thread t = new Thread(new Task());
		t.start();
	}
}
//任务类
class Task implements Runnable{
	//当前线程抢到cpu资源后,就会执行run方法
	@Override
	public void run() {
		System.out.println("抢到资源了");
	}
}

七、感受多线程之间争抢资源的场景

需求:编写一个多线程的应用程序,主线程打印1-100之间的数字,子线程打印200-300之间的数字,观察其输出的结果,体会多线程互相争抢资源的场景

class MyThread extends Thread{
	@Override
	public void run() {
		for (int i = 200; i <= 300; i++) {
			System.out.println("子线程:" + i);
		}	
	}
}

public class Test01 {
	public static void main(String[] args) {
		MyThread t = new MyThread();
		t.start();
		for (int i = 1; i <= 100; i++) {
			System.out.println("主线程:" + i);
		}
	}
}

八、小结

  • 进程与进程 的关系:独享内存空间和系统资源

  • 线程 与 进程 的关系:有一个进程中至少包含一个线程

  • 线程 与 线程 的关系:在同一个进程里,多个线程共享内存空间和系统资源

  • 一个进程中包含多个线程,只有一个主线程

  • 经典面试题:请问当我们编写一个单纯的main方法时,此时该程序是否为单线程的?为什么?

    不行,垃圾回收器是一个后台线程

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值