当前位置:网站首页>Thread Basics
Thread Basics
2022-07-01 09:51:00 【Weekly focus】
Foreword and outline
Every process in the computer system (Process) All represent a running program , A process is an encapsulation of a runtime program , The basic unit of resource scheduling and allocation in the system .
There can be many threads in a process , A thread is a subtask of a process , yes CPU Basic unit of dispatch and dispatch , It is used to ensure the real-time performance of the program , Achieve concurrency within the process , Threads are also the smallest execution and scheduling unit recognized by the operating system .
stay Java Threads are the carrier of program execution , The code we write is run by threads . Sometimes in order to increase the efficiency of program execution , We have to use multithreading for programming , Although multithreading can maximize program utilization CPU The efficiency of , But it is also the frequent occurrence of procedural accidents 、 The biggest inducement for programmers to lose their hair . The main reason is that our thinking is single threaded by default , When writing multithreads, you have to switch , This requires us to have a thorough understanding of the basic knowledge of threading .
Let's summarize this article Java The foundation of threads , Master more , I'll lose less hair in the future , Not only save money for hair planting , Wages can still go up , This is a win-win situation . The outline of this paper is as follows :
OK, let's start today's text , Go straight to the code .
Java Thread in
up to now , All we wrote Java The program code is made up of JVM To create Main Thread In a single thread .Java Thread is like a virtual CPU, Can be run in Java In the application Java Code . When one Java When the application starts , Its entry method main() Method is executed by the main thread . The main thread (Main Thread) It's a by Java A special thread created by a virtual machine to run your application .
because Java It's all about objects , So threads are also represented by objects , Thread is a class java.lang.Thread Class or an instance of its subclass . stay Java Inside the application , We can go through Thread Instance creation and start more threads , These threads can execute the application code in parallel with the main thread .
Create and start threads
stay Java Create a thread , To create a Thread Class
Thread thread = new Thread();To start a thread is to call the thread object start() Method
thread.start();Of course , This example does not specify the code to be executed by the thread , So the thread will stop immediately after starting .
Specify the code to be executed by the thread
There are two ways to assign code to a thread to execute .
- The first is , establish Thread Subclasses of , Covering the parent class run() Method , stay run() Method to specify the code to be executed by the thread .
- The second is , Will implement Runnable (java.lang.Runnable) Is passed to Thread Construction method , establish Thread example .
Actually , There is a third usage , But on closer examination, it can be classified into the second kind of special use , Now let's look at the usage and differences of these three .
adopt Thread Subclasses specify the code to execute
By inheritance Thread Class to create a thread :
- Definition Thread Subclasses of classes , And cover the run() Method .run() The method body of the method represents the task to be completed by the thread , So the run Methods are called executors .
- establish Thread Instances of subclasses , The thread object is created .
- Calling the start Method to start the thread .
package com.learnthread;
public class ThreadDemo {
public static void main(String[] args) {
// Instantiate thread object
MyThread threadA = new MyThread("Thread Threads -A");
MyThread threadB = new MyThread("Thread Threads -B");
// Start thread
threadA.start();
threadB.start();
}
static class MyThread extends Thread {
private int ticket = 5;
MyThread(String name) {
super(name);
}
@Override
public void run() {
while (ticket > 0) {
System.out.println(Thread.currentThread().getName() + " Sold No " + ticket + " Tickets ");
ticket--;
}
}
}
}The above procedure , The main thread starts the call A、B two-threaded start() after , Failed wait() Wait for their execution to end .A、B The execution body of two threads , Will be executed by the system concurrently , Wait until the thread ends directly , The program will exit .
By implementing Runnable Interface specifies the code to execute
Runnable In the interface , only one run() Method definition :
package java.lang;
public interface Runnable {
public abstract void run();
}Actually ,Thread Class implements Runnable Interface . stay Thread Class overloaded constructor , Support receiving an implementation Runnale The object of the interface as its target Parameter to initialize the thread object .
public class Thread implements Runnable {
...
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
...
public Thread(Runnable target, String name) {
init(null, target, name, 0);
}
...
}By implementing Runnable Interface to create threads :
- Definition Runnable Interface implementation , Implement the interface run Method . The run The method body of a method is also the execution body of a thread .
- establish Runnable Instance of implementation class , And take this example as Thread Of target To create Thread object , The Thread Object is the real thread object .
- Calling the start Method to start the thread and execute .
package com.learnthread;
public class RunnableDemo {
public static void main(String[] args) {
// Instantiate thread object
Thread threadA = new Thread(new MyThread(), "Runnable Threads -A");
Thread threadB = new Thread(new MyThread(), "Runnable Threads -B");
// Start thread
threadA.start();
threadB.start();
}
static class MyThread implements Runnable {
private int ticket = 5;
@Override
public void run() {
while (ticket > 0) {
System.out.println(Thread.currentThread().getName() + " Sold No " + ticket + " Tickets ");
ticket--;
}
}
}
}Running the above routine will produce the following output , Similarly, the program will exit after all threads are executed .
Runnable Threads -B Sold No 5 Tickets
Runnable Threads -B Sold No 4 Tickets
Runnable Threads -B Sold No 3 Tickets
Runnable Threads -B Sold No 2 Tickets
Runnable Threads -B Sold No 1 Tickets
Runnable Threads -A Sold No 5 Tickets
Runnable Threads -A Sold No 4 Tickets
Runnable Threads -A Sold No 3 Tickets
Runnable Threads -A Sold No 2 Tickets
Runnable Threads -A Sold No 1 Tickets
Process finished with exit code 0Since it's for Thread Pass on Runnable The implementation object of the interface , In addition to the common way of defining classes to implement interfaces , We can also use anonymous classes and Lambda Expression Runnable The implementation of the .
- Use Runnable Anonymous classes are created as parameters Thread object :
Thread threadA = new Thread(new Runnable() {
private int ticket = 5;
@Override
public void run() {
while (ticket > 0) {
System.out.println(Thread.currentThread().getName() + " Sold No " + ticket + " Tickets ");
ticket--;
}
}
}, "Runnable Threads -A");- Use to achieve Runnable Of Lambda Expressions are created as parameters Thread object :
Runnable runnable = () -> { System.out.println("Lambda Runnable running"); };
Thread threadB = new Thread(runnable, "Runnable Threads -B");because ,Lambda It's stateless , Cannot define internal properties , Here is a simple example of printing one line of output , Just understand this usage .
边栏推荐
- Analysis and solution of JS this loss
- 持续进阶,软通动力稳步推动云智能战略
- 短路运算符惰性求值
- Mikrotik Routeros Internet access settings
- Cortex M4 systick details
- 架构实战营 毕业总结
- Closure implementation iterator effect
- scratch大鱼吃小鱼 电子学会图形化编程scratch等级考试二级真题和答案解析2022年6月
- Swift control encapsulation - paging controller
- A 419 error occurred in the laravel postman submission form. July 6th, 2020 diary.
猜你喜欢

The programmer was beaten.

Cortex M4 systick details

Error org apache. catalina. core. StandardContext. FilterStart start filter exception

持续进阶,软通动力稳步推动云智能战略

谁拥有穿越周期的眼光?

LVGL V8.2字符串显示在Keil MDK上需要注意的事项(以小熊派为例)

HMS core audio editing service 3D audio technology helps create an immersive auditory feast

Import and export of power platform platform sharepointlist

Fried money, lost 10million.

【无标题】
随机推荐
项目采购管理
MT7628K eCos开发入门
SQL learning notes (03) -- data constraint relationship
SQL学习笔记(01)——数据库基本知识
主流实时流处理计算框架Flink初体验
Some tools used in embedded development
CSDN一站式云服务开放内测,诚邀新老用户来抢鲜
ES6 const essence and completely immutable implementation (object.free)
123. how to stop a thread?
If you meet a female driver and drive didi as an amateur, you can earn 500 a day!
吃一个女富豪的瓜。。。
好高的佣金,《新程序员》合伙人计划来袭,人人皆可参与!
UE small knowledge point controller possess pawn process
Swag init error: cannot find type definition: response Response
The market is relatively weak recently
122. Thread class thread method summary; Why is the thread start method start () not run ()?
“中移链”国密引擎在BSN正式上线
ES6 decoupling top-level objects from windows
Postgraduate entrance examination vocabulary 2023 sharing (1)
What is P in cap theory