Javaweb---线程(1)

开篇:
关于进程线程的小理解:
进程:就像是一个大车间 要完成的一项任务
线程:就是车间的流水线,多个流水线去完成这一项任务.
1.线程包含于进程内
2.一个进程中可能有多个线程
3.线程有自己的指令 线程与线程之间是独立的
4.同一个进程中的许多线程的资源是共享的(内存资源 文件)

不共享的资源 : 栈 上下文 状态 优先级 记账信息

线程:操作系统进行调度和执行的最小单位
操作系统管理进程的方式:
先描述:用PCB描述 内核只认PCB 一个线程–>一个PCB
一个进程–>多个PCB
再组织:用双向链表表示

在这里插入图片描述
在这里插入图片描述
多线程的缺点:
1.线程不安全
2.一个线程如果抛出异常但是没有很好的处理这个异常的话整个程序就会被直接终止 其他线程也就无法继续正常工作了

代码示例:
JAVA中如何使用多线程:

创建线程代码写法:(看注释)

1.直接继承Thread类
涉及两个线程 main(主线程)和Thread(用户创建的线程)
在这里插入图片描述
在这里插入图片描述
查看确实有两个线程(把两个线程搞成一个死循环)
在这里插入图片描述
Runnable:就绪状态
堆栈跟踪:线程的调用栈
2.通过匿名内部类的方式
在这里插入图片描述
3.显示创建一个类 实现Runnable接口
在这里插入图片描述
4.通过匿名内部类实现Runnable接口在这里插入图片描述
在这里插入图片描述
5.使用lambda表达式
在这里插入图片描述
在这里插入图片描述
Thread的常见构造方法中:
Thread(String name) 可以给线程指定一个名字,为了调试的时候看起来更直观.

串行与多线程并发执行的时间比较:
串行执行:
在这里插入图片描述
时间:
在这里插入图片描述
并发执行:
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述
结论:串行的时间大大缩短!

[面试题]: Thread中run和start的区别
1.run只是一个普通的方法调用没有创建新线程 输出语句是在原线程中执行的
2.start是创建一个新的线程 由新线程中进行输出
在这里插入图片描述
在这里插入图片描述
这两个调用的结果看似相同 然而一个创建了线程 一个并没有创建线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb线程编程指的是在JavaWeb应用程序使用多线程来实现并发处理请求的编程技术。通过多线程编程,可以提高Web应用程序的并发处理能力和响应速度。 在JavaWeb线程编程,可以使用以下几种方式来实现多线程: 1. 使用Thread类:可以创建一个继承自Thread类的子类,并重写其run()方法来定义线程的执行逻辑。通过创建多个线程对象,可以同时处理多个请求。 2. 使用Runnable接口:可以创建一个实现了Runnable接口的类,并实现其run()方法来定义线程的执行逻辑。然后,可以将该类的对象作为参数传递给Thread类的构造方法,创建多个线程对象进行并发处理。 3. 使用线程池:可以使用Java提供的线程池ExecutorService来管理线程,通过提交任务给线程池,由线程池负责创建和管理线程。这种方式可以更好地控制线程的数量和生命周期,提高资源利用率。 在JavaWeb线程编程,需要注意以下几点: 1. 线程安全:确保共享资源在多个线程之间的访问安全,避免出现竞态条件和数据不一致等问题。可以使用同步机制(如synchronized关键字、Lock接口)来保证线程安全。 2. 上下文切换:多线程并发执行时,线程之间会发生上下文切换,这会带来一定的性能开销。需要合理安排线程的数量和调度策略,避免频繁的上下文切换。 3. 资源管理:多线程并发执行时,需要合理管理和分配系统资源,如数据库连接、线程池大小等,以避免资源竞争和资源浪费。 总之,JavaWeb线程编程可以提高Web应用程序的并发处理能力和响应速度,但需要注意线程安全、上下文切换和资源管理等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值