搬以前写的博客[2014-12-30 16:04] 在web应用中服务器面临的是大量的访问请求,免不了多线程程序,但是有时候,我们希望在多线程应用中的某一个类只能新建一个对象的时候,就会遇到问题. 首先考虑单线程,如果要求只能新建一个对象,那么构造函数我们要设为private.简单的想法: class singleton{ private singleton(){ //..... } private static singleton instance; public static singlet…
有点笨,参考了好几篇大佬们写的文章才整理出来的笔记.... 字面意思上解释,线程池就是装有线程的池,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用. 好处 多线程产生的问题 一般我们使用到多线程的编程的时候,需要通过new Thread(xxRunnable).start()创建并开启线程,我们可以使用多线程来达到最优效率(如多线程下载). 但是,线程不是越多就越好,线程过多,创建和销毁就会消耗系统的资源,也不方便管理. 除此之外,多线…
题目一 本质上来说,线程是不可控制的,线程的执行是由CPU资源分配决定的,我们无法干预系统CPU的资源分配,但我们可以增加条件来让线程按照我们的预想顺序来执行. 比如.如果当前的执行的线程不满足我们所定的条件,那么就让CPU重新进行资源的分配,直到资源分配给我们所需要的某个线程 题目说明 编写一个线程类(只有一个类),创建三个线程实例:A线程对象.B线程对象.C线程对象:A线程完成打印"A", B线程完成打印"B", C线程完成打印"C";按照A…
线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销 优点:(面试题)可重复使用已有线程,避免对象创建.消亡和过度切换的性能开销.避免创建大量同类线程所导致的资源过度竞争和内存溢出的问题.支持更多功能,比如延迟任务线程池(newScheduledThreadPool)和缓存线程池(newCachedThreadPool)等. 创建方式:有两种:ThreadPoolExecutor 和 Executors 1.ThreadP…
2019.4.2 线程实现的两种方式 继承线程,复写其中的run方法 实现runnable接口,复写run方法 使用: MyThread target = new MyThread(); new Thread(taget).start(); //或者使用匿名 如下 new Thread(new Runnable() { @Override public void run() { } }).start(); synchronized 同步操作 1. 同步代码块 声明一个互斥锁 static Obj…
线程的概念:一个线程是进程的顺序执行流: 同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈.线程在切换时负荷小,因此,线程也被称为轻负荷进程.一个进程中可以有多个线程. 进程与线程的区别: 线程的划分程度小于进程,使得多线程程序并发性高. 进程在执行过程中有独立的内存单元,而多个线程共享内存,极大的提高了程序的运行效率. 执行过程中两者的区别在于:每个独立的线程有一个程序运行的入口.顺序执行序列.和程序的出口. 线程不能够独立执行,必须依存在应用程序中,由应用程序提…
线程: 定义:线程是程序内的一个单一的顺序控制流程,也被称为“轻型进程(lightweight process)” 或“执行上下文(execution context )” 线程用于分隔任务 线程类似于传统的顺序程序,都有一个执行的起点,经过一系列指令后到达终点.线程在执行过程中的任何时刻只能有一个执行点 main()是一个特殊的线程 实现方法: 1.继承Thread 2.实现runnable接口 启动方式: 1.start() 交叉执行线程,一个等待即执行下一个,各个线程的xc1.start(…
单例类在Java开发者中非常常用,但是它给初级开发者们造成了很多挑战.他们所面对的其中一个关键挑战是,怎样确保单例类的行为是单例?也就是说,无论任何原因,如何防止单例类有多个实例.在整个应用生命周期中,要保证只有一个单例类的实例被创建,双重检查锁(Double checked locking of Singleton)是一种实现方法.顾名思义,在双重检查锁中,代码会检查两次单例类是否有已存在的实例,一次加锁一次不加锁,一次确保不会有多个实例被创建.顺便提一下,在JDK1.5中,Java修复了其内…
开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别…
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行的代码 继承java.lang.Thread创建线程 public class Test1 { public static void main(String[] args){ System.out.println("现在是主线程: "+Thread.currentThread()); //…