黑马程序员——多线程

<pre name="code" class="html">------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
 

进程概述及多进程的意义

进程:可以简单理解就是电脑上安装的一个软件。

进程与线程之间是存在关系的:线程是进程的一个单元片段。(一个进程是由多个线程组成的。)

多进程:在电脑上一次可以运行多个程序。这些程序每一个都可以理解成是一个进程。

对于我们的电脑,它们一般都是多进程的,可以增加用户感受。

线程概述及多线程的意义

线程是程序运行的一个路径,多线程存在的目的为了提高程序的运行效率。

线程与线程之间 是否可以通信?

可以

进程与进程之间 是否可以通信?

不能通信。

在实际开发中,哪些地方使用到了多线程?

Web程序它本身就是多线程的。

在以后开发中会涉及到数据对导。可以使用多线程操作。

多线程举例及并行和并发的区别

并行:在同一时间执行多个操作

是在同一个时间段内执行操作,它也可以按顺序排列。

并发:在同一时间点执行多个操作

是在同一时间点上执行操作,会存在一些数据安全问题.

并行:两个人给两个孩子一起喂奶,

并发:一个人给两个孩子喂奶

Java程序 运行原理 和JVM的启动是多线程的吗

JVM是不是一个进程。

我们所写的程序,可以理解成是一个线程。

它是在JVM中运行,是一个单元片段。

 

Java可以调用c程来完成对硬件的访问。也就是说,我们的多线程程序,会占用cpu时间片是通过底层调用cc++程序来完成的。而我们真实使用时,其实已经将这些屏蔽。

问题:JVM启动是多线程的吗?

是,当我们的一个程序运行时,可以理解成是一个线程在执行。

而这时,jvm会不定时的开启另外一个守护线程,jvm垃圾回收,它也是一个线程,

所以我们说,jvm启动是多线程的。

如何实现多线程及多线程方式

java中有一个类 Thread类,它是java.lang包下的。它就是线程类.

:java中创建线程有几种方式?

1.继承Thread

2.实现Runnable接口

介绍关于继承的这种方式:

继承Thread类创建线程方式步骤:

1. 创建一个类继承Thread

2. 重写run方法

3. 创建这个类的实例,调用start方法启动线程。

<span style="font-size:12px;">package cn.itcast.thread;
//第一种方式实现多线程   extends Thread类.
public class ThreadDemo1 {

	public static void main(String[] args) {
		MyThread1 mt1 = new MyThread1(); // 创建一个实例

		mt1.start();// 调用start方法,开启线程
	}
}

// 1.定义一个类,继承Thread
class MyThread1 extends Thread {

	// 2.重写run方法
	@Override
	public void run() {
		System.out.println("一个线程线程执行");
	}

}
</span>

多线程方式2的思路及代码实现

实现Runnable接口方式来创建线程步骤;

1. 创建一个类,实现Runnable接口

2. 重写接口中的run方法。

3. 创建一个Thread对象,将我们自定义的类的对象做为Thread类的构造方法的参数传递。

4. 通过Thread类的start方法开启线程,这时调用 的是其构造方法中传递的实现的Runnable接口的类中的run方法。

package cn.itcast.runnable;
//关于实现Runnable接口创建线程的方式
public class RunnableDemo1 {

	public static void main(String[] args) {
		// 3.创建一个Thread对象,将我们自定义的类的对象做为Thread类的构造方法的参数传递。
		MyThread1 mt = new MyThread1();
		Thread th = new Thread(mt);

		// 4.通过Thread类的start方法开启线程,这时调用 的是其构造方法中传递的实现的Runnable接口的类中的run方法
		th.start();
	}
}

// 1. 创建一个类,实现Runnable接口
class MyThread1 implements Runnable {

	// 2. 重写接口中的run方法。
	@Override
	public void run() {

		System.out.println("子线程执行");
	}
}

多线程两种方式的比较及区别

问题:我们在开发中使用哪种方式?

使用实现Runnable接口的方式.

原因:

1.扩展性

实现接口可以实现多个。

继承只能继承一个。(java中是单继承)

2.关于数据的使用问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值