Java多线程机制1
2020-08-11 17:10
85 查看
进程与线程
- 进程是程序的一次动态执行过程。
- 一个进程中可能有多个线程,线程是运行在进程中的”小进程”。
- 多进程可以共享操作系统的资源,而多线程可以共享进程中的某些内存单元(包括代码与数据)。
Java中的线程
- 多线程是指一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况。
- 多线程的实质是Java虚拟机快速地控制从一个线程切换到另一个线程。
- JVM首先发现main方法建立主线程,其它线程是在主线程中再创建的,JVM在主线程和其它线程之间轮流切换,保证每个线程都有机会使用CPU资源,JVM在所有线程结束后才会结束Java应用程序。
- Java使用Thread类及其子类的对象来表示线程。
- 新建线程:已经具有相应的内存空间和其它资源
- 运行线程:线程调用start()方法通知JVM安排切换,继承Thread抽象类并重写run()方法赋予线程具体使命。
- 中断线程:线程切换导致中断、sleep()方法中断、wait()和noftify()方法中断、操作阻塞中断。
- 死亡线程:自然死亡、强制死亡。
Thread子类创建线程的实例
//主线程 package ch5; public class Example12_1 { public static void main(String[] args) { SpeakElephant speakElephant; SpeakCar speakCar; //利用Thread的子类创建线程 speakElephant = new SpeakElephant();//创建线程1 speakCar = new SpeakCar();//创建线程2 speakElephant.start();//启动线程1 speakCar.start();//启动线程2 for(int i=1;i<=15;i++) { System.out.println("主人"+i+" "); } } }
//SpeakElephant线程 package ch5; public class SpeakElephant extends Thread{ //继承并重写抽象方法 public void run() { for(int i=1;i<=20;i++) { System.out.print("大象"+i+" "); } } }
//SpeakCar线程 package ch5; public class SpeakCar extends Thread{ public void run() { for(int i=1;i<=20;i++) { System.out.print("轿车"+i+" "); } } }
运行多次发现运行结果不尽相同,由此可知输出结果依赖于当前CPU资源的使用情况。
在循环运行之前安排线程,可能会在循环中切换到其它线程运行,然后再切换回来继续循环。
Thread类与线程的创建
- 利用Thread子类创建线程
可以使得子类增加新的属性和方法 - 利用Thread创建线程
构造方法:Thread(Runnable target),参数是一个Runnable类型的接口,在创建线程时必须向构造方法的参数传递一个实现该接口类的实例。
Thread创建线程的实例
package ch12; public class Example12_2 { public static void main(String[] args) { House house = new House(); house.setWater(10); Thread dog,cat; dog = new Thread(house); cat = new Thread(house); dog.start(); cat.start(); } }
package ch12; public class House implements Runnable{ int waterAmount; public void setWater(int w) { waterAmount = w; } public void run() { int m = 1; while(true) { if(waterAmount<=0) { return; } waterAmount = waterAmount-m; System.out.println("剩"+waterAmount+"克:"); try{Thread.sleep(200); } catch(InterruptedException e) { } } } }
相关文章推荐
- java中的互斥锁,信号量和多线程等待机制
- JAVA多线程机制
- 【Java多线程】浅谈多线程机制(三)之互斥与同步
- Java多线程的同步机制(synchronized)
- JAVA多线程机制
- java的多线程机制上
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
- JAVA 多线程机制(二)
- java多线程、并发系列之 (synchronized)同步与加锁机制
- Java多线程四:线程间通信/等待唤醒机制
- java多线程等待唤醒机制
- Java多线程(1)——同 4000 步机制
- java 中多线程之间的通讯之等待唤醒机制
- 【我的Java笔记】多线程_等待唤醒机制(生产消费者模式)
- java 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
- java教程:解析java的多线程机制(二)
- 第九章 Java多线程机制 01_线程的基本概念
- 解析Java的多线程机制
- java多线程(2):线程通信之生产者消费者模式及等待唤醒机制
- Java多线程 中断机制及实例详解