cari
RumahJavajavaTutorial重拾java基础(十七):多线程上总结

重拾java基础(十七):多线程上总结

一、进程

1. ctrl+shift+esc   任务管理器窗口2. 程序都是在操作系统环境下运行的 ,需要占用CPU和内存资源,从程序开始运行到程序被关闭,这个过程叫进程3. 进程是操作系统中独有的概念,进程=正在运行的程序4. 正在运行的程序都至少对应一个进程5. 有些程序会采用多进程架构设计7. 进程间相互独立,不能互相访问或共享资源

二、线程(thread)

1. 程序-进程  工厂2. 工厂里的生产线就叫线程3. 进程包含线程,线程是更小的一个独立的执行单元 4. 一个进程中可以包含一个线程(单线程),也可以包含多个线程(多线程)5. QQ是一个程序(进程),打开的每个聊天窗口就是一个线程6. 咱们之前写的程序都是单线程,JVM会自动把main方法当成一个线程(生产线)去执行7. 线程不能独立运行,不能脱离进程去执行,多个线程之间可以共享进程的资源8. 线程之间是独立的

三、多线程编程

1. 咱们之前写的程序都是单线程,JVM会自动把main方法当成一个线程(生产线)去执行2. 一个程序中有A/B两个功能,如果采用多线程编程,A功能可以放到一个线程(生产线)中执行,B功能可以放到一个线程(生产线)中执行3. 上传图片   a.一张一张上传   b.多张同时上传4. 多线程是进一步利用了CPU和内存的资源,从而提供程序的执行效率5. 工厂         迅雷

四、CPU跟多线程

1. 一个学生能同时写字和看片吗?大脑在写字和看片之间切换2. 胶片电影     速度非常快,大脑会产生错觉3. 真正的“同时”是不存在的,CPU是在 多个线程之间极快的、轮流的、随机的进行切换

五、Java支持多线程

1.Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程或后台服务线程) 。守护线程的作用是为其他线程的运行提供服务,比如说GC线程。2.方式一:  继承Thread类     方式二:  实现Runnable接口

六、方式一

1. 我们之前定义的类都是普通类,因为这些类中的代码不能同时去执行,这些类不是生产线类2. Java专门提供了一个生产线类:java.lang.Thread类,该类中的代码是可以同时执行的3. 步骤:        让我们自定义的类继承Thread类,我们定义的类就变成了生产线类        在自定义的类中重写run方法,把需要同时执行的代码放到run方法中        在main方法中,先造生产线,然后启动生产线     start()

七、Thread类

public long getId(),获得该线程的编号(线程 ID) ,它在创建该线程时生成。线程 ID 是唯一的,并终生不变。public final void setName(String name),给线程命名,不命名的话都有默认的,格式为:Thread-0、Thread-1...public final String getName(),获得线程的名字public void start(),使该线程开始执行,JVM会自动调用该线程的 run() 方法。public static void sleep(long millis),让线程休眠(暂停)多少毫秒public static Thread currentThread(),获得当前正在执行的线程对象的引用。(方式二会用到)

八、多线程的执行流程

1. JVM首先找到的是main方法,并把main中的代码放到一个线程中执行,这个线程叫主线程2. 另外自己人工创建的线程可以称之为是子线程3. 程序必须等到所有的线程都执行完了,才会结束

九、方式二

1. 弊端:方式一继承了Thread类后就不能继承其他类了  好处:简单、容易实现2. 步骤:    a.我们自定义的类实现java.lang.Runnable接口    b.把需要同时执行的代码放到run方法中    c.在main中创建生产线(Thread)并启动3. 方式二没有方式一的弊端,但是比方式一复杂

十、线程安全问题、

1. 什么情况下会存在线程安全问题?   a.多个线程之间是相互独立的   b.多个线程在操作或使用共享资源2. 多个线程操作的是同一个共享资源,但是线程之间是彼此独立、互不联系的,因此就会出现数据不同步更新的情况,这就是线程安全问题3. 卖火车票案例         同时要执行的代码:卖10张火车票         共享资源:10张火车票      一般作为属性存在

十一、怎么解决线程安全问题

1. 思路:火车上的厕所,一个一个进......2. 同步锁,专业术语叫监视器monitor3. Java在每个对象中都自动内置了一个监视器monitor   遍地都是锁4. 有两种实现方式:同步代码块     同步方法

十二、同步代码块

1. 先分析哪些代码需要上锁2. synchronized(锁){   }3. 多个线程之间使用的锁必须是同一把锁

十三、同步方法

1. 把需要上锁的代码先放到一个方法中2. 把该方法变成同步方法public synchronized void sell(){     操作共享数据的代码即需要同步的代码;}3. 同步方法的锁默认是this,是固定的

十四、同步锁的利弊

同步的好处:       同步的出现解决了多线程的安全问题同步的弊端:    当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。(性能和线程安全不可兼得)

十五、细节问题

1. 静态方法可以改为同步方法吗? 可以   但是锁不是this    加载类的字节码文件      Student.class2. 线程安全问题出现的前提是:必须存在共享资源,而且多个线程使用了共享资源3. 锁必须是同一把锁


以上就是重拾java基础(十七):多线程上总结的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.