随笔分类 - 【Java】学习博客 / 【多线程教程】
摘要:进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。 程序,进程,线程: 在操作系统中运行的程序就是进程,比如你的QQ、播放器、游戏、IDE
阅读全文
摘要:线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。 线程池的
阅读全文
摘要:在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题
阅读全文
摘要:Lock(锁) 从JDK5.0开始,Java提供了更强大的线程同步机制——通过显示定义同步锁对象来实现同步,同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享线程进行了访问的工具。锁提供了对共享资源的独占访问,每次只有一个线程对Lock对
阅读全文
摘要:死锁 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。 化妆死锁案例: package test; //死锁:多个线程互相抱着对方需要的资源,然后形成僵持 public class DeadLock { public
阅读全文
摘要:线程同步 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提供一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法 和 synchronized 块 同步方法: public synchronized v
阅读全文
摘要:实现静态代理对比Thread (1)静态代理总结 真实对象和代理对象都要实现同一个接口代理对象要代理真实角色 (2)好处 代理对象可以做更多真实对象做不了的事情真实对象专注于做自己的事情 package test; //静态代理总结 //真实对象和代理对象都要实现同一个接口 //代理对象要代理真实角
阅读全文
摘要:并发 并发:同一个对象被多个线程同时操作 并发问题:买火车的票的案例 多个线程同时操作同一个对象 package test; import com.sun.org.apache.bcel.internal.generic.NEW; //多个线程同时操作同一个对象 //买火车的票的案例 //发现问题
阅读全文
摘要:线程状态 线程共包括以下5种状态。 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如
阅读全文
摘要:实现Callable接口 实现Callable接口,需要返回值类型:implements Callable 重写call方法,需要抛出异常 :public Boolean call() throws Exception {} 创建目标对象 :CallableTest callableTest = n
阅读全文
摘要:实现Runnable 定义MyRunnable实现Runnable接口实现run方法,编写线程执行体创建线程对象,调用start()方法启动线程 代码实现 package test; //创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用sta
阅读全文
摘要:Thread 自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程 线程不一定立即执行,由CPU调度! package test; //创建线程方式一:继承Thread类 ,重写run方法 ,调用start开启线程 public class T
阅读全文