Java学习日记18——多线程

本文介绍了Java中多线程的创建方式,包括继承Thread类和实现Runnable接口,并讨论了线程的同步、线程类型(普通线程与守护线程)、并发API如Atomic变量和线程池,还涉及了Timer类的使用以及Java流式操作和并行流的应用。通过实例展示了如何在Java中有效地管理和控制多线程执行。
摘要由CSDN通过智能技术生成

Java学习日记18——多线程

 线程简单来说就是在一个程序中有多个任务在执行,比如一边下载一边看剧。但是实际上是多个任务共享CPU时间片段。并非是真正的同时执行。Java支持语言级别的多线程。例如object中的wait,notify以及java.lang里的类Thread等。线程一般是在执行时间比较长的情况。

线程的创建的两种方法:

 1.通过继承Thread类创建线程,然后重写run方法来实现运行。
例如:

class Counter extends Thread {
   
	@Override
	public void run() {
   
		// TODO Auto-generated method stub
	}
}

 2.通过Thread的构造方法传递Runnable接口对象来创建线程。
例如:

class Counter implements Runnable {
   
	@Override
	public void run() {
   
		// TODO Auto-generated method stub
	}
}

无论是哪种方法都是需要重写run方法来实现,完成方法的书写后就可以创建线程对象,调用start方法启动线程。
线程生命周期
 线程的启动是用start(),线程的结束是当run方法内完成运行后自动结束。暂时停止线程执行则可以使用sleep(Time)方法进行休眠。一般sleep需要捕获异常。

线程一般分为两类:

 1.普通线程,在Java程序中,只要还有普通线程在运行,那么程序就不会结束。
 2.Daemon线程(守护线程,后台线程),如果普通线程执行完成了,后台线程就会自动终止,例如垃圾回收线程,在普通线程结束后,就自动结束运行,他不会阻止虚拟机的结束。设置收获线程使用的方法是setDaemon(true)。例如

Thread t = new MyThread();
t.setDaemon(true);
t.start();

线程的同步

 同时运行的线程需要共享数据,就必须考虑将线程的状态和行为,这是就必须要实现同步。在Java中的每一个对象都引入了互斥锁的概念,来保证数据共享操作的完整性,每个对象都有一个monitor监视器,称为互斥锁(lock,mutex)标记,保证在任意时刻,只有一个线程可以访问该对象。使用关键字synchronized用来与对象的互斥锁联系。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值