多线程总结1

本文介绍了进程与线程的概念,详细阐述了多线程的特点及其两种创建方式,并讨论了同步机制如何解决多线程环境下的数据安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


进程:正在进行中的程序。  就是一个应用程序在内存中开辟的空间。

 

线程:负责进程中程序运行的一个控制单元。

              一个进程中至少有一个线程。

 

 

多线程:可以同时执行多部分代码。就是一个进程中有多个线程。

  特点:

1,让进程中产生多个执行路径。

2,随机性。

       由CPU处理造成的,CPU在快速做着快速的切换造成的。

3,安全性。

 

Jvm启动:有两个线程,一个线程为了控制main函数的执行,另一个是控制垃圾回收机制的运行。

 

主线程:主函数中运行的代码。

 

创建线程的目的:开辟一个单独的路径,在执行一些代码的同时去执行指定的代码。

 

主线程运行代码位置: main函数中。

 

线程运行代码存放的位置:继承Thread类或实现Runable接口的子类中覆盖的run方法中。

 

线程创建的第一种方式:

1,声明一个Thread的子类。

2,覆盖Thread父类中的run()方法,并将线程要执行的内容写在run()方法中。

3,创建子类线程对象

4,启动子类线程对象的start() 方法。(告诉jvm启动线程,并执行子类中的run方法)

 

getName() :得到线程的名字。 (Thread-…)

 

主线程的名字如何得到:Thread.currentThread().getName();// 得到当前线程的名字。

 

构造函数传递线程名

                     子类 (String name)

{

       super(name);

}

IllegalThreadStateException :无效的线程异常。运行时异常。

InterruptedException:中断异常。

static 让数据共享。

 

线程第二种创建方式:(线程多用次方法)*****

1,实现Runable 接口,并覆盖run方法,将线程执行内容写进run方法中。

2,创建子类对象。

3,用Thread线程类创建线程对象,并将实现接口的子类对象作为实际参数传递给Thread类的构造方法。

(原因:因为线程执行的任务都封装在了Runable接口的子类中,必须将run方法所属的对象告诉线程,让线程明确要执行的任务)

4,调用Thread类的start方法开启线程,运行指定线程任务的run()方法。

 

避免了单继承的局限性。

 

创建线程,用继承Thread类方法的局限性:当次类有父类时不能继承Thread类。

 

Run方法是扩展功能,子类应该实现接口。

 

Runable的作用:定义线程执行的任务,将任务封装成对象。

       好处:

              1,避免了单继承的局限性。

              2,降低耦合性:将低线程和执行任务的耦合性。

 

同步:(火车卫生间的原理)

       格式synchronized(对象)// 对象可以是任意的

                     {

                           

}

       好处:解决多线程的安全问题。

       弊端:因为线程不断的判断锁,降低了效率。

 

安全问题:

 

多个线程操作同一个数据。

一个线程正在操作一段语句时,其他线程也参与了进啦。

 

 

同步的前提:

1,多线程。同一段代码是不是由两个以上线程操作。

2,必须是同一个锁。

(当线程出现安全问题时,加上同步问题依然存在,必须要考虑这两个前提)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值