lambda表达式 new Thread(()->System.out.println("多线程学习")).start(); lambda表达式只能有一行代码的情况下才可以简化成一行,如果有多行,就需要用代码块 必须是函数式接口接口(函数式接口就是只包含唯一一个抽象方法) 多个参数可以去掉参数类型, ...
分类:
其他好文 时间:
2021-05-24 03:25:08
阅读次数:
0
1.synchronized关键字 1.1什么意思 synchronized关键字主要是用来解决多个线程访问资源的同步性,也就是保证被修饰的方法或者代码块任意时刻都只能有一个线程在执行。 底层实现是在修饰的前后加上minitorenter/minitorexit: minitorenter:当需要获 ...
分类:
编程语言 时间:
2021-04-20 14:32:00
阅读次数:
0
java中,线程分为两类,分别时守护线程(daemon线程)和user线程(用户线程)。在JVM启动的时候,会调用main函数,main函数所在的线程就是一个用户线程,其实在JVM内部同时还调用了其他好多守护线程,例如垃圾回收线程等。 守护线程和用户线程的区别:当最后一个非守护线程执行完毕之后,不管 ...
分类:
编程语言 时间:
2021-04-13 11:41:00
阅读次数:
0
线程简介 //Process 进程 //Tread 线程 线程创建 /* 三种创建方式 1. Thread class(继承Thread类) 2. Runnable接口(实现Runnable接口) 3. Callable接口(实现Callable接口) */ //1.创建线程方式一:继承Thread ...
分类:
编程语言 时间:
2021-03-04 13:23:06
阅读次数:
0
一、简介 ==程序:==指令和数据的集合 ==进程:==程序的一次执行过程,是系统资源分配的基本单位 ==线程:==是cpu调度和执行的单位 二、线程实现 继承Thread ThreadImpl extends Thread 重写run() new Thread().start() 实现Runnab ...
分类:
编程语言 时间:
2020-12-04 10:53:13
阅读次数:
8
线程学习二 串行、并发、并行 串行 串行如图所示: 串行可以理解为鱼贯而行,任务一个个完成,可以遵循某一原则,但是必须完成前一个任务之后才能完成下一个任务。时间是线性的,即所有程序运行时间之和。 并发 并发如图所示: 并发就是在一段时间内以交替的方式去完成多个任务,可以理解为,cpu内部有一个时间片 ...
分类:
编程语言 时间:
2020-09-17 20:28:06
阅读次数:
32
一、进程和线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作 ...
分类:
编程语言 时间:
2020-08-31 11:54:36
阅读次数:
42
java 中Semaphere可类比操作系统信号量,硬件资源如IO、内存、磁盘等都是有固定量的,多个程序需要竞争这些资源,没有资源就需要被挂起。 一、类和方法摘要 构造函数: public Semaphore(int permits):创建具有给定的许可数和非公平的公平设置的 Semaphore。 ...
分类:
编程语言 时间:
2020-07-30 01:39:21
阅读次数:
79
Callable与Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: public interface Runnable { public abstract void run(); } 由于run()方法返回值为void类型,所以在执 ...
分类:
编程语言 时间:
2020-07-29 09:55:03
阅读次数:
70
当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问 ...
分类:
编程语言 时间:
2020-07-23 01:47:26
阅读次数:
97