2.两个银行同时存取钱 银行---》存钱,手机---》取钱
3.双十一网购 二:认识Java多线程 1.认识Java多线程提出了Java中的并行的概念,在同一时间内提升了代码的执行效率。
2.CPU工作原理和时间片的概念。
例:刷网剧:3ms,浏览网页:10ms,办公:20ms,听音乐:5ms (比如浏览网页CPU分配的时间片10ms到了,浏览网页先挂起,CPU会执行下一个进程)
3.进程由至少一个线程组成。
4.程序是指令和数据的有序集合,进程是程序的运行过程。
总结为:CPU ---> 指令 ---> 程序 ---> 进程 ---> 线程 三:JAVA中线程的生命周期 Java中线程的生命周期详解
1.新建状态:建立一个线程对象(new)后该线程对象就处于新建状态,它保持这个状态直到执行start()方法。
2.就绪状态:当线程调用了start()方法之后,就会进入就绪状态。此时的线程处于就绪队列中,等待JVM的调度。
3.运行状态:就绪状态的线程获取CPU资源,就可以执行run()方法,此时线程便处于运行状态。处于运行状态的线程较为复杂,它可以变为阻塞状态,就绪状态和死亡状态。
{ 阻塞状态:如果一个线程执行了sleep(睡眠),suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。
可以分为三种:
1.等待阻塞:运行状态中的线程执行wait()方法,使线程进入到等待阻塞状态。
2.同步阻塞:线程获取synchronized同步锁失败(因为同步锁被其他线程占用)。
3.其他阻塞:通过调用线程的sleep()或join()发出了I/O请求时,线程就会进入到阻塞状态。
当 sleep()状态超时,join()等待线程终止或超时,或者I/O处理完毕,线程重新转入就绪状态。
4.死亡状态:线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。}
1.每一个Java线程都有一个优先级,有助于操作系统确定线程的调度顺序。
2.Java线程的优先级是一个整数,取值范围是1(Thread.MIN_PRIORITY)-10(Thread.MAX_PRIORITY)。
3.默认情况下,每一个线程都会分配一个优先级NORM_PRIORITY(5)。
4.具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序。
5.线程A中启动线程B,线程B继承了线程A的优先级。
1.通过继承Thread类本身。
2.通过实现Runnable接口。
3.通过Callable和Future创建线程池。
1.继承Thread类实现多线程的格式:
权限修饰符 类名 extends Thread { }
2.实现Runnable接口实现多线程的格式:
权限修饰符 类名 implements Runnable { }
public class TestDemo01 {
public static void main(String[] args) {
MyThread thread1=new MyThread();
MyThread thread2=new MyThread();
thread1.start();
thread2.start();
}
}
class MyThread extends Thread{
//含义:@Override代表重写父类方法
@Override
public void run(){
System.out.println(" Java 688 ");
}
}
public class TestDemo02 implements Runnable {
private String threadName;
public TestDemo02(String threadName) {
this.threadName=threadName;
}
@Override
public void run() {
System.out.println(threadName);
for(int i=0;i<10;i++) {
System.out.println("线程--"+threadName+"--"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程*"+threadName+"*执行结束");
}
public static void main(String[] args) {
TestDemo02 t1=new TestDemo02("陈晓明");
TestDemo02 t2=new TestDemo02("张阳阳");
Thread zhangsan=new Thread(t1);
Thread lisi=new Thread(t2);
zhangsan.start();
lisi.start();
}
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!


