Java中线程超详细版本

本文详细介绍了Java中线程的创建方式,包括继承Thread类和实现Runnable接口,讨论了Thread类的重要方法如设置和获取线程名、线程状态控制。还探讨了线程安全问题,提供了三种解决方案:同步代码块、同步方法和显式锁。此外,文章提及线程死锁的概念,并简要提到了线程的状态和线程池的分类。
摘要由CSDN通过智能技术生成

线程

线程的概念:说到线程的概念,我们不得不提到进程。

进程:是指一个内存中运行的应用程序,每一个进程都有一个独立的内存空间。

线程:1、是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程 。 2、线程实际上是在进程的基础上进一步划分的,一个进程启动之后,里面若干个执行路径又可以划分成若干个线程。

一、线程如何创建:

线程有三种创建方法:
常见的两种方式是分别是继承Thread类,实现Runnable接口。第三种比较少见

1.继承Thread类创建线程
首先需要创建一个类,这个继承了Thread类的类就是一个线程的类,在继承之后需要重写一下run方法,也就是线程要执行的任务,这里的代码就是一条新的执行路径。而这个执行路径的触发方式,不是调用run()方法,而是通过thread对象的start()方法来启动任务。
在这里插入图片描述
2.实现Runnable接口
首先,要创建一个类,并且实现Runnable接口,并实现里面的抽象方法run(),方法中执行的是线程的任务。此时理解为这个类里面存放的是即将要被线程执行的任务。
在这里插入图片描述
接下来将这个类实例化,再new一个线程,Thread的()里面参数是r,也就是线程的任务,再通过start()去触发这个执行路径。

MyRunnable r = new Runnable();
Thread t = new Thread(r);
t.start();

这是实现Runnable的线程创建方式。

二、Thread类的各种常用方法:

我们先来看看Thread类的构造方法:
在这里插入图片描述
Thread类不仅可以传入Runnable类型的任务,还可以给线程取一个名字。

守护线程和用户线程:在Thread()中有一个方法:setDaemon(boolean on),这个方法的作用是将此线程标记为守护线程。(守护线程是用来守护用户线程的,当用户线程全部死亡后,守护线程也随之死亡,它是依附于用户线程的)

接下来,我们来看看线程的常用方法 -> 设置和获取正在执行的线程名称

Thread.currentThread().getName();

-> 线程的指定时间休眠(单位是毫秒)

Thread.sleep(100ms);

-> 线程中断(线程是一个独立的执行路径,它是否应该结束,应该由其自身决定)
当检测到t1的中断标记后,就会检测到异常。可以说是人为的让线程中止,常见的方法有sleep(),wait(),这些方法中都有中断标记,会让线程中断。

Thread t1 = new Thread(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值