当前位置:网站首页>如何创建线程
如何创建线程
2022-07-05 22:17:00 【爱敲代码的小高】
目录
一:认识线程
说到线程,我们就不得不提进程。较为官方的定义,进程是系统分配资源的最小单位,这个资源可以是cpu、内存等等。线程是系统调度的最小单位。并且同一个进程下的各个线程之间是可以相互共享资源的。
具体来说,举个例子,我们平时中午家里妈妈出去买菜,那么买菜就可以算是一个进程,紧接着妈妈让我们去卖鱼,她去买肉,那么这里的卖鱼和卖肉分别是买菜进程下的两个两个线程,那么相应的一些资源,比如用于买菜的钱,买鱼和买肉的时候都可以用。并且这样分头行动比和妈妈一起买完鱼再去买肉,相对的速度要快很对。
于此,我们发现,多线程可以提升效率。
二:如何构造线程
1:继承Thread类,重写run方法
代码如下
class MyThread extends Thread{
@Override
public void run() {
System.out.println("hello,Thread");
}
}
public class ThreadDemo1 {
public static void main(String[] args) {
Thread t =new MyThread();
t.start();
t.run();
}
}
2:实现runnable接口,重写run方法
代码如下
class MyRunnable implements Runnable{
@Override
public void run() {
while (true){
System.out.println("hello,Thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class ThreadDemo3 {
public static void main(String[] args) {
Thread t =new Thread(new MyRunnable());
t.start();
}
}
3:使用lambda表达式创建runnable子类对象
代码如下
public class ThreadDemo6 {
public static void main(String[] args) {
Thread t =new Thread(() ->{
while (true){
System.out.println("hello thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
}
}
此外,也可以用匿名内部类的方式创建Thread和Runnable对象
4匿名内部类方法
1:Thread
public class ThreadDemo4 {
public static void main(String[] args) {
//这个语法就是匿名内部类
//相当于创建了一个匿名的类,这个类继承了Thread
//此处咱们new的实例,其实就是new了这个新的子类的实例
Thread t =new Thread(){
@Override
public void run() {
while(true){
System.out.println("hello,Thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t.start();
}
}
2:Runnable
public class ThreadDemo5 {
public static void main(String[] args) {
Thread t =new Thread(new Runnable() {
@Override
public void run() {
while (true){
System.out.println("hello thread"); try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t.start();
}
}
以上就是线程进程的一些区别和联系以及创建线程的几种方法,算是有五种吧。
边栏推荐
- Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)
- Win11 runs CMD to prompt the solution of "the requested operation needs to be promoted"
- Summary of concurrency control
- What if the files on the USB flash disk cannot be deleted? Win11 unable to delete U disk file solution tutorial
- AD637使用筆記
- How can Bluetooth in notebook computer be used to connect headphones
- Did you brush the real title of the blue bridge cup over the years? Come here and teach you to counter attack!
- Win11运行cmd提示“请求的操作需要提升”的解决方法
- C language knowledge points link
- When the industrial Internet era is truly mature, we will look at the emergence of a series of new industrial giants
猜你喜欢
Promql demo service
Pl/sql basic syntax
Win11缺少dll文件怎么办?Win11系统找不到dll文件修复方法
Web3为互联网带来了哪些改变?
Kubernetes Administrator certification (CKA) exam notes (IV)
数博会精彩回顾 | 彰显科研实力,中创算力荣获数字化影响力企业奖
Three "factions" in the metauniverse
【愚公系列】2022年7月 Go教学课程 004-Go代码注释
Talking about MySQL index
Win11 runs CMD to prompt the solution of "the requested operation needs to be promoted"
随机推荐
Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
The simple problem of leetcode is to split a string into several groups of length K
90后测试员:“入职阿里,这一次,我决定不在跳槽了”
AD637使用笔记
了解 Android Kotlin 中 DataStore 的基本概念以及为什么应该停止在 Android 中使用 SharedPreferences
Sentinel production environment practice (I)
Draw a red lantern with MATLAB
Metaverse Ape上线倒计时,推荐活动火爆进行
Hcip day 16
笔记本电脑蓝牙怎么用来连接耳机
Two stage locking protocol for concurrency control
Server optimization of performance tuning methodology
Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)
Database recovery strategy
Leetcode simple question: find the nearest point with the same X or Y coordinate
Implementation technology of recovery
MySQL服务莫名宕机的解决方案
微服務鏈路風險分析
boundary IoU 的计算方式
Type of fault