Java 中的多线程实现较为简单,这篇文章主要讲解多线程操作中状态操作相关的代码示例,希望可以帮助你提高对多线程的理解。
要学习多线程首先要了解进程和线程还有多线程的区别是什么
进程
在开启一个软件后,操作系统会分配给软件一个进程,进程即该软件所在的内存区域,是软件运行时状态的一个抽象,是一个整体,进程中必须包含线程,不可独立存在。
线程
线程的宿主是进程,一个进程代表一个软件,线程为一个进程中正在并行执行的一些功能,打个比方,QQ 有接收消息的功能还有上线提醒的功能,它们同时进行,互不干扰。
多线程
在多核 CPU 中,通过软件或者硬件来实现多个核心协同工作,达到充分使用 CPU 的目的。在单核CPU时,操作系统会进行伪多线程处理,即每个线程随机短暂运行并快速切换,实现多任务处理。
创建线程的两种方式
继承 Thread 对象
class DemoTask extends Thread {
public static List<String> list = new ArrayList<>();
@Override
public void run() {
System.out.println("hello Thread");
}
}
实现 Runnable 接口
class DemoTask implements Runnable {
public static List<String> list = new ArrayList<>();
@Override
public void run() {
System.out.println("hello Runnable");
}
}
实际开发中,推荐实现 Runnable 接口,因为 Java 是支持多实现的但是仅仅支持单继承,如果继承了 Thread 对象,那就不能继承其他对象了。
线程中的相关方法
Sleep - 休眠
使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。
public class TestRunnable {
public static void main(String[] args){
NewRunnable runnable = new NewRunnable();
//分别创建两个线程,并传入runnable参数
Thread thread1 = new Thread(runnable);
Thread thread2 = new Thread(runnable);
//运行线程
thread1.start();
thread2.start();
System.out.println("End....");
}
}
class NewRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
try <