
Java
imxlw00
这个作者很懒,什么都没留下…
展开
-
java -1 创建和启动线程
方式1:继承Thread类;步骤:1):定义一个类A继承于java.lang.Thread类.2):在A类中覆盖Thread类中的run方法.3):我们在run方法中编写需要执行的操作---->run方法里的,线程执行体.4):在main方法(线程)中,创建线程对象,并启动线程.创建线程类对象: A类 a = n...原创 2018-12-28 20:09:42 · 183 阅读 · 0 评论 -
java -15线程的状态转换、线程组
线程组线程组: 把多个线程组合到一起。它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。线程默认情况下属于main线程组private static void method1() { //线程在默认线程数组中 //创建对象 MyRunnable mr = new MyRunnable(); ...原创 2018-12-29 22:25:33 · 160 阅读 · 0 评论 -
java -16线程池
程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池线程池的好处:线程池里的每一个线程代码结束...原创 2018-12-29 22:33:54 · 222 阅读 · 0 评论 -
java -17结束线程
使用标志public class ThreadCloseGraceful { private static class Worker extends Thread { private volatile boolean start = true; @Override public void run() { whil...原创 2018-12-30 13:42:48 · 171 阅读 · 0 评论 -
java -18多线程下的生产者消费者模型
notifyAll方法public class ProduceConsumerVersion3 { private int i = 0; final private Object LOCK = new Object(); private volatile boolean isProduced = false; public void produce() {...原创 2018-12-30 15:53:55 · 220 阅读 · 0 评论 -
java 设计模式 单例
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有很多种写法,大部分写法都或多或少有一些不足。下面将分别对这几种写法进行介绍。1、饿汉模式public class SingletonDemo1 { //类初始化时,立即加载这个对象(没有延时加载的优势)。...原创 2019-01-07 10:34:48 · 2223 阅读 · 1 评论 -
java 代理模式
代理(Proxy):为其他对象提供一种代理以控制对这个对象的访问举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子用图表示如下:1、静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(...原创 2019-01-18 22:03:01 · 126 阅读 · 0 评论 -
Java 7编程高级进阶 数组
数组本质上是相同数据类型的元素的集合。例如。整形数组中包含的元素每个元素都是int类型,浮点数数组中包含的每个元素都是float类型。声明数组声明数组的语法如下:type[] arrayName;声明整形数组如下:int [] numbers;声明float类型数组:float [] floatNumbers创建数组int [] numbers;numbers=new ...原创 2019-07-13 10:13:16 · 231 阅读 · 0 评论 -
JAVA中从键盘输入的三种方法以及CONSOLE输入(转)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Inout { public static void main(String[...转载 2019-07-13 10:21:50 · 345 阅读 · 0 评论 -
递归
递归求和public class Sum { public static int sum(int [] arr) { return sum(arr,0); } private static int sum(int [] arr,int index) { if(index==arr.length) {...原创 2019-07-14 18:00:57 · 132 阅读 · 0 评论 -
SpringBoot快速入门
SpringBoot快速入门1 创建Maven工程使用idea工具创建一个maven工程,该工程为普通的java工程即可2 添加SpringBoot的起步依赖SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent<parent> <groupId>org.springframework....原创 2019-07-25 08:23:27 · 237 阅读 · 0 评论 -
java -14生产者和消费者的代码优化
资源类public class Student { // 创建对象 private String name; private int age; // 创建标签 private boolean flag; // 录入数据 public synchronized void set(String name, int age) { ...原创 2018-12-29 22:20:47 · 194 阅读 · 0 评论 -
java -13等待唤醒机制
资源类 public class Student { String name; int age; boolean flag; // 默认情况是没有数据,如果是true,说明有数据 }生产者public class SetThread implements Runnable { private Student s; private ...原创 2018-12-29 22:18:08 · 459 阅读 · 0 评论 -
java -12生产者和消费者
生产者和消费者问题的描述图通过上图,我们可以发现:生产者和消费者使用的都是同一个资源(肉包子)所以,当使用线程的时候,这两类的锁也是同一把锁(为了避免出现线程安全问题)例子:学生信息的录入和获取* 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo资源类 publ...原创 2018-12-29 22:10:48 · 152 阅读 · 0 评论 -
java -2获取和设置线程名称
获取线程对象的名称public final String getName():获取线程的名称。这个方法是放在写在自定义线程类中的,也即是Thread的子类:public class MyThread extends Thread { public void run() { for(int x = 0; x &amp;amp;amp;lt; 100; x++){ ...原创 2018-12-28 20:26:04 · 300 阅读 · 0 评论 -
java -3线程调度
线程调度假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令。那么Java是如何对线程进行调用的呢?线程有两种调度模型:分时调度模型 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片抢占式调度模型 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优...原创 2018-12-28 20:50:07 · 268 阅读 · 0 评论 -
java -4 线程控制
线程休眠public static void sleep(long millis)public class ThreadSleep extends Thread { @Override public void run() { for (int x = 0; x &amp;lt; 100; x++) { System.out.println(get...原创 2018-12-28 21:13:25 · 122 阅读 · 0 评论 -
java -5 线程生命周期图解
原创 2018-12-28 21:18:06 · 152 阅读 · 0 评论 -
java -6多线程之模拟票口售票
public class SellTicket implements Runnable { // 定义100张票 private int ticket = 100; public void run() { //假设一直在售票 while(true){ //现实中买票时,都会有延迟的,所以让线程休息下...原创 2018-12-28 21:38:32 · 457 阅读 · 0 评论 -
java -7线程同步
线程安全问题原因要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准)A:是否是多线程环境B:是否有共享数据C:是否有多条语句操作共享数据如何解决问题:原因A、B肯定不能改变,所以只能改变原因C思想:如果把多条语句操作共享数据的代码给包成一个整体,让某个线程在执行这个整体的时候,别的线程不能执行。这时候就用到了jav...原创 2018-12-28 21:55:04 · 152 阅读 · 0 评论 -
java -8多线程同步锁
同步代码块的锁对象是任意对象:(Object obj ; Demo d;)这些都行同步方法:把同步关键字synchronized添加到方法上,那么,同步方法的锁对象是this同步方法是静态方法,那么这个静态同步方法的锁对象是类的字节码文件对象public class SellTicket implements Runnable { // 定义100张票 p...原创 2018-12-28 22:13:50 · 614 阅读 · 0 评论 -
java -9多线程Lock锁
虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。Lock是个接口。void lock(): 获取锁。void unlock():释放锁。ReentrantLock是Lock的实现类。public class SellTicket implements ...原创 2018-12-29 11:07:49 · 211 阅读 · 0 评论 -
java -10死锁问题
死锁两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象举例: 中国人,美国人一起吃饭。正常情况: 中国人:筷子两支 美国人:刀和叉死锁时: 中国人:筷子1支,刀一把 美国人:筷子1支,叉一把public class MyLock { // 创建两把锁对象 public static final Object objA = new O...原创 2018-12-29 11:38:08 · 297 阅读 · 0 评论 -
java -0操作进程
//在java中简单获取一个进程/** * 需求 : 运行记事本程序 * @author Lin * * 方式1 : Runtime类的exec方法 * 方式2 :ProcessBuilder的start方法 * */public class ProcessDemo { public static void main(String[] args) throws Except...原创 2018-12-29 21:32:51 · 355 阅读 · 0 评论 -
java -11吃苹果比赛
案例存在50个苹果,现在有请三个童鞋(小A,小B,小C)上台表演吃苹果.因为A,B,C三个人可以同时吃苹果,此时得使用多线程技术来实现这个案例.继承方式使用继承方式完成该案例的时候,此时A,B,C都吃了50个苹果.为何?接口方式在使用实现方式的时候,我们发现A,B,C一共吃了50个苹果,为何.因为三个线程共享了一个Apple对象,而一个Apple对象中有50个苹果数量...原创 2018-12-29 21:53:01 · 346 阅读 · 0 评论 -
spring boot 配置文件
SpringBoot默认会从Resources目录下加载application.propertie文件。application.properties文件是键值对类型的文件默认配置新建覆盖配置port配置path默认为原创 2019-07-25 08:36:33 · 117 阅读 · 0 评论