- 博客(59)
- 问答 (1)
- 收藏
- 关注
原创 Java 多线程join方法
class Demo implements Runnable{ public void run(){ for(int x=0;x<50;x++){ System.out.println(Thread.currentThread().getName()+".."+x); } }}class JoinDemo{ public static void main(String[
2017-08-31 16:43:22 262
原创 Java 多线程守护线程
setDeamon(boolean on) 方法当该行程 被定义为守护线程时如t2.setDaemon(true);若 t1线程 中断 (其余线程全部中断)t2自动中断
2017-08-31 15:50:24 215
原创 Java 多线程结束 的第二种方法 interrupt方法
/*停止线程:1 stop 方法。2 run 方法结束怎么控制线程的任务结束?任务中都会有循环结构(没有循环就不需要多线程了,开多线程就是怕这里循环影响其他),只要控制住循环就可以结束任务控制循环通常就用定义标记来完成如果线程处于了冻结状态 就无法读取标记 如何结束? 可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具有cpu的执行资格但
2017-08-31 14:30:58 237
原创 Java 多线程停止 定义标记
/*停止线程:1 stop 方法。2 run 方法结束怎么控制线程的任务结束?任务中都会有循环结构(没有循环就不需要多线程了,开多线程就是怕这里循环影响其他),只要控制住循环就可以结束任务控制循环通常就用定义标记来完成 */class StopThread implements Runnable{ private boolean flag=true; public v
2017-08-30 22:15:19 655
原创 Java 多线程sleep 和wait 的区别
wait 和 sleep 的区别?1 wait 可以指定时间也可以不指定 sleep 必须指定时间2 在同步中 对cpu的执行权和锁的处理不同。wait:释放执行权 释放锁sleep:释放执行权 不释放锁(别人还是进不来)
2017-08-30 21:53:40 259
原创 Java 多线程 生产者消费者 jdk1.5后新方法
/*生产者,消费者多生产者,多消费者的问题if判断标记 只有一次 会导致不该运行的线程运行了,出现了数据错误的情况while判断标记 解决了线程获取执行权后,是否要允许!notifyAll解决了 本方线程一定会唤醒对方线程(但是影响效率)notify 只能唤醒一个线程,如果本方唤醒了本方没有意义 而且while判断标记+ notify会导致死锁Lock接口:出现替代了同步代码块
2017-08-30 20:14:12 263
原创 Java 多线程间通信 多生产 多消费问题
/*生产者,消费者多生产者,多消费者的问题if判断标记 只有一次 会导致不该运行的线程运行了,出现了数据错误的情况while判断标记 解决了线程获取执行权后,是否要允许!notifyAll解决了 本方线程一定会唤醒对方线程(但是影响效率)notify 只能唤醒一个线程,如果本方唤醒了本方没有意义 而且while判断标记+ notify会导致死锁*/class Produc
2017-08-25 21:34:28 263
原创 Java 多线程间的通信 等待唤醒
/*有两个线程 一个给名字和性别赋值(input) 一个输出名字和性别(output) 但会一下输出很多同样的名字和性别(cpu没切走)用等待唤醒机制 就可以 1 赋值一个 然后input wait 唤醒output 2 输出一个 output wait 再唤醒input 这样可以赋值一个 就输出一个 等待/唤醒机制。涉及的方法:1 wait(); 让线程处于冻结状态,被wait
2017-08-25 19:37:43 299
原创 Java 多线程的通信
/*线程间通信:多个线程在处理同一资源,但是任务不同*/class Resource{ String name; String sex;}class Input implements Runnable{ Resource r; Input (Resource r){ this.r=r; } public void run(){ int x=0; whi
2017-08-25 16:07:21 226
原创 Java 死锁例子
/*死锁:产生死锁的原因之一 同步的嵌套本应该无限打印 但死锁会停止打印*/class Test implements Runnable{ boolean flag=true; Test(boolean flag) { this.flag=flag; } public void run(){ if(flag){ while(true){ synchroni
2017-08-24 16:50:05 231
原创 Java 同步单例设计模式
//饿汉式class Single{ private static final Single s=new Single(); private Single(){} public static Single getInstance(){ return s; }}//懒汉式class Single{ private static s=null; private Single()
2017-08-24 15:19:19 279
转载 Leetcode add-two-numbers
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } *//*题意是将两个链表相加 但这两个链表是反序存储的 (每个节点只包含一位数字)要求返回相
2017-08-24 14:18:20 195
原创 Java 同步函数
/* 同步函数 用的锁是this 可以将同步代码块 传入的对象为this 则同步代码块和同步函数调用了同一个锁 同步函数和同步代码块的区别: 同步函数的锁是固定的this(当前对象) 同步代码块的锁是任意对象 建议使用同步代码块*//**/class Ticket implements Runnable{ p
2017-08-23 20:13:31 371
原创 Java 同步问题2
/*线程安全问题产生发原因:1 多个线程在操作同一个数据2 操作共享数据的线程代码有多条当一个线程在执行操作共享数据的多条代码过程中 其他线程参与了运算就会导致线程安全问题的产生解决思路:就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候其他线程不可以参与运算必须要当前线程把这些代码都执行完毕后,其他线程才可以参与运算在Java中 用同步代码块就可以
2017-08-22 12:01:14 233
原创 Java 同步问题
/*线程安全问题产生发原因:1 多个线程在操作同一个数据2 操作共享数据的线程代码有多条当一个线程在执行操作共享数据的多条代码过程中 其他线程参与了运算就会导致线程安全问题的产生解决思路:就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候其他线程不可以参与运算必须要当前线程把这些代码都执行完毕后,其他线程才可以参与运算在Java中 用同步代码块就可以
2017-08-21 21:49:26 330
原创 完全函数依赖和部分函数依赖
完全函数依赖{学号,课号}-->成绩 学号+课号 可以决定 成绩 但只有学号or只有课号无法决定成绩 部分函数依赖 {学号,课号}-->姓名 只有学号就能决定姓名 (课号是冗余的) ...
2017-08-21 19:55:26 23131 17
原创 Java 多线程 线程安全问题
/*线程安全问题产生发原因:1 多个线程在操作同一个数据2 操作共享数据的线程代码有多条当一个线程在执行操作共享数据的多条代码过程中 其他线程参与了运算就会导致线程安全问题的产生*/class Ticket implements Runnable{ private int num=100; public void run(){ while(true){ if(n
2017-08-20 20:58:38 307
原创 Java 创建多线程的第二种方式
/*创建线程的第一种方法:继承Thread类创建线程的第二种方法:实现Runnable接口1 定义类实现Runnable接口2 覆盖接口中的run方法,将线程的任务代码封装到run方法中3 通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread构造函数的参数进行传递//为什么 ?因为线程的任务都封装在Runnable接口子类对象的run方法中//所以要
2017-08-18 08:59:05 323
原创 Java 多线程内存
创建新的现成后 就会有新的栈空间 与主函数 不同的空间 任意栈空间异常或结束 不影响其他栈空间 Exception in thread “main” 异常在 主函数线程中
2017-08-17 16:09:26 284
原创 Java Thread 类中的方法和线程名称
/*如何创建一个线程创建线程方式一:继承Thead类步骤1 定义一个类继承Thead类2 覆盖Thread类中的run方法3 直接创建Thread的子类对象创建线程4 调用start方法开启线程并调用线程任务的run方法执行可以通过Thread的getName获取线程的名称 Thread-编号(从0开始) 一创建对象时就有编号主线程的名字就是main*/class D
2017-08-17 15:44:39 852
原创 Java 多线程的创建 ---继承Thread类
/*如何创建一个线程创建线程方式一:继承Thead类步骤1 定义一个类继承Thead类2 覆盖Thread类中的run方法3 直接创建Thread的子类对象创建线程4 调用start方法开启线程并调用线程任务的run方法执行*/class Demo extends Thread{ private String name; Demo(String name){ thi
2017-08-17 15:22:50 701
原创 Java 多线程 简介
/*进程:正在进行中的程序(直译)其实对应 在内存中开辟的空间线程:进程中的一个负责程序执行的控制单元(执行路径)一个进程中可以有多个执行路径,称为多线程一个进程中至少有一个线程 开启多个线程是为了同时运行多部分代码每一线程都有自己运行的内容,这个内容可以称为线程要执行的任务多线程 能解决多个部分同时执行弊端 效率低(cpu切换的太多了 ) 其实应用程序的执行都是
2017-08-17 14:47:10 202
转载 cmd 下 javac 错误:编码GBK不可映射字符
。两种方法 1、用记事本打开 另存为 编码 选择为ANSI 保存2、在cmd窗口下执行javac命令是,写为javac -encoding utf-8 -d . 文件名转自http://blog.csdn.net/u012848709/article/details/52719045
2017-08-16 23:22:47 408
原创 Java Jar包
/*Jar:java的压缩包*/package pack;class JarDemo{ public static void main(String[] args) { System.out.println("Hello Jar"); }} //./pack//.haha.jar/pack/*D:\毕Java\包>set classpath=./haha.ja
2017-08-16 23:08:20 260
原创 Java import 导入包中类
package mypack; import packa.DemoA;//导入了 packa包中的 DemoA类 import packa.*;//导入类,只能导入类 //packa\abc\DemoABC.class//需要 import packa.abc.*;//开发不建议导入*// 导包的原则 用到那个类 导入那个类 不管多少个//import 干嘛用的? 为了简化类
2017-08-16 22:50:31 6924
原创 Java 四种访问权限
package packb;public class DemoB { /*public*/protected void method() {//保护 只能子类访问此功能 System.out.println("Hello DemoB"); }}/*四种权限总结: 包与包之间的类进行访问,被访问的包中的类必须是public的 被访问的类中的方法也必须是public的
2017-08-16 20:58:13 310
原创 Java 包与包之间的访问 (类在不同包里)
package mypack; class PackageDemo2{ public static void main(String[] args) { //DemoA d=new DemoA(); packa.DemoA d=new packa.DemoA(); d.show(); System.out.println("Hello package"); }}/*D
2017-08-16 20:00:02 3119
原创 Java 包
/*包: 对类文件进行分层管理 给类提供多层命名空间 写在程序文件的第一行 类名的全称是 包名.类名 包也是一种封装形式*/package mypack;// mypack.hehe.hahaclass PackageDemo1{ public static void main(String[] args) { System.out.println("Hellow Pac
2017-08-16 14:36:30 201
原创 Java toString
/*toString()所有对象都有此 方法 但建议将其覆盖*/ class Person extends Object{ private int age; Person(int age){ this.age=age; } /* 一般都会覆盖此方法(equals),根据对象的特有内容,建立判断对象是否相同的依据 */ public boolean e
2017-08-16 00:48:20 395 1
原创 Java hashcode 和getClass
class Person extends Object{ private int age; Person(int age){ this.age=age; } /* 一般都会覆盖此方法(equals),根据对象的特有内容,建立判断对象是否相同的依据 */ public boolean equals(Object obj){ if(!(obj instanc
2017-08-16 00:39:40 519
原创 Java 字节码文件Class(大写C) 和getClass方法
人抽取出 Person 对象 class 抽取出 Class(自解码文件类名)、先产生自解码文件 在产生类对象getClass方法 返回 自解码Class文件 Class clazz1=p1.getClass(); Class clazz2=p2.getClass(); System.out.println(clazz2==clazz1); Sys
2017-08-16 00:37:15 808
原创 Java 异常注意事项
/*异常的注意事项:1、子类在覆盖父类方法是,父类的方法如果抛出了异常那么子类的方法只能抛出父类的异常 或者该异常的子类2、如果父类抛出多个异常,那么子类只能抛出父类异常的子集简单说: 子类覆盖父类只能抛出父类的异常或者子类或者子集注意: 如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛异常 就只能tryinterface Inter{ void function();
2017-08-15 20:56:03 300
原创 Java 异常应用 异常代码快的封装
/*毕老师用电脑上课问题涉及涉及两个对象毕老师 电脑分析其中的问题比如 电脑蓝屏 冒烟了冒烟了 不能抛给公司 需要无法上课异常 将无法上课异常抛给公司 */class LanPingException extends Exception{ LanPingException(String msg){ super(msg); }} class MaoYanExce
2017-08-15 20:36:17 324
原创 Java 异常finally 代码块
/*finally 一定会执行到除非System.exit(0) //退出jvm*/class Demo{ public int show(int index)throws ArrayIndexOutOfBoundsException{ if(index<0) throw new ArrayIndexOutOfBoundsException("越界了"); int []
2017-08-15 11:07:20 348
原创 Java 多catch
/*异常 多catch*/class FuShuIndexException extends Exception{ FuShuIndexException(){ } FuShuIndexException(String msg){ super(msg); }}class Demo{ public int method(int []arr,int index)throw
2017-08-14 20:54:20 539
原创 Java 自定义异常 异常抛出
/*对于角标是整数不存在 可以用角标越界表示对于负数为角标的情况 准备用负数角标异常来表示负数角标这种异常在Java中没有定义过那就按照Java 异常的创建思想 面向对象 将负数角标进行自定义描述 并封装成对象这种自定义的问题描述称为自定义异常注意:如果让一个类称为异常类,必须要继承异常体系,因为只有称为体系的子类才具备可抛性 才可以被两个关键字 所操作,throws thro
2017-08-14 12:36:31 1878
原创 Java 异常抛出
class Demo{ public void method(int []arr,int index){ System.out.println(arr[index]);//(虚拟机 先new 再 throw给主函数) throw new ArrayIndexOutBoundsException(idnex) }}class ExceptionDemo2{ public stati
2017-08-13 16:41:38 246
空空如也
IDEA 文件夹图标的问题
2018-05-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人