Java 学习笔记
人间折耳根
这个作者很懒,什么都没留下…
展开
-
java学习笔记 多线程练习题总结
一、判断题1. C和Java都是多线程的。 ( )答案:错误 知识点:C 是单线程语言。2.如果线程死亡,它便不能运行。 ( )答案:正确 知识点:线程死亡就意味着它不能运行。3.在 Java 中,高优先级的可运行线程会抢占低优先级线程。( )答案:正确 知识点:线程优先级的使用。4.程序开发者必须创建一个线程去管理内存的分配。( )答案:错误 知识点:Java 提供了一个系统线程来管理内存的分配。...原创 2020-10-22 11:36:53 · 1806 阅读 · 0 评论 -
java学习笔记 jdk5新增的创建线程方式 - Callable接口和线程池
* 创建线程的方式三:实现Callable接口。 --- JDK 5.0新增*** 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?* 1. call()可以有返回值的* 2. call()可以抛出异常,被外面的操作捕获,获取异常的信息* 3. Callable是支持泛型的需要借助FutureTask类,比如获取返回结果。Future接口可以对具体Runnable、Callable任务的执行结果进行取消、查询是 否完成、获取结果等。 .原创 2020-10-22 09:47:19 · 85 阅读 · 0 评论 -
java学习笔记 线程通信
* 线程通信的例子:使用两个线程打印 1-100。线程1, 线程2 交替打印** 涉及到的三个方法:* wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。* notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。* notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。示例代码:class Number implements Runnable{ private int number.原创 2020-10-22 09:32:28 · 100 阅读 · 0 评论 -
java学习笔记 死锁与锁Lock
死锁的演示代码:class A { public synchronized void foo(B b) { //同步监视器:A类的对象:a System.out.println("当前线程名: " + Thread.currentThread().getName() + " 进入了A实例的foo方法"); // ①// try {// Thread.sleep(200);// } catch (InterruptedException ex) {// ex.print原创 2020-10-21 11:26:49 · 77 阅读 · 0 评论 -
java学习笔记 多线程 - 使用同步机制将单例模式中的懒汉式改写为线程安全的
问题描述:使用同步机制将单例模式中的懒汉式改写为线程安全的。class Bank{ private Bank(){} private static Bank instance = null; public static Bank getInstance(){ //方式一:效率稍差// synchronized (Bank.class) {// if(instance == null){////原创 2020-10-21 11:14:54 · 180 阅读 · 0 评论 -
java学习笔记 窗口售票问题 - 线程同步机制
问题描述:创建3个窗口卖票,票数为100张。使用继承Thread类的方式实现,存在线程安全问题,待解决:class Window extends Thread{ private static int ticket = 100; @Override public void run() { while(true){ if(ticket > 0){ System.out.println.原创 2020-10-21 11:09:35 · 381 阅读 · 2 评论 -
java学习笔记 2020/10/21 Thread类中的方法
Thread中的常用方法: 1. start():启动当前线程;调用当前线程的run() 2. run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中 3. currentThread():静态方法,返回执行当前代码的线程 4. getName():获取当前线程的名字 5. setName():设置当前线程的名字 6. yield():释放当前cpu的执行权 7. join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全.转载 2020-10-21 10:30:09 · 66 阅读 · 0 评论 -
java学习笔记 2020/9/23 线程的创建与线程的生命周期
1. java多线程的创建方式方式一:继承于Thread类1)创建一个继承于Thread类的子类;2)重写Thread类中的run()方法;3)创建该子类的对象;4)通过这个对象去调用start()方法。方式二:实现Runnable接口1)创建一个实现Runnable接口的类2)这个类要去实现Runnable接口中的抽象方法run()3)创建这个实现类的对象4)将此对象作为参数传入Thread类的构造方法中,创建Thread类的对象5)通过Thread类的对原创 2020-09-28 16:58:57 · 71 阅读 · 0 评论 -
java学习笔记 2020/9/21
1. 成员内部类的特点:一方面,作为外部类的成员可以调用外部类的结构;可以用static修饰;可以被4种不同的权限修饰。另一方面,作为一个类:内部可以定义属性、方法、构造器等;可以被final修饰,表示不能被继承;可以被abstract修饰。2. 如何实例化成员内部类的对象?//静态的成员内部类:Person.Dog dog = new Person.Dog();dog.eat();//非静态的成员内部类://Person.Bird bird = n原创 2020-09-22 16:05:51 · 68 阅读 · 0 评论 -
java学习笔记 2020/9/18
1. 代码块代码块是用 " { " 和 " } " 包含起来的,括号前可以用static修饰,作用为初始化类和对象。分类:静态代码块(前有static),非静态代码块静态代码块:内部可以有输出语句 随着类的加载而执行,且只执行一次 作用:初始化类的信息 静态代码块的执行要优先于非静态代码块 静态代码块之中只能调用静态的属性/方法非静态代码块:内部也可以有输出语句 随着对象的创建而执行,且每出现一个对象执行一次 作用:可以在创建对象时,对对象的属性进行初始化 内部可原创 2020-09-18 19:14:07 · 71 阅读 · 0 评论 -
java学习笔记 2020/9/17
1. JVM中的存储空间分配栈:局部变量;堆:new出来的结构、对象的非static属性;方法区:类的加载信息、常量池、静态区2. 匿名对象只能调用一次3.int[] arr = new int[] {1,2,3};char[] arr1 = new char {'a','b','c'};system.out.println(arr); //输出地址值system.out.println(arr1); //输出abc4. JavaBean指符合如下标准..原创 2020-09-18 10:12:56 · 101 阅读 · 0 评论