![](https://img-blog.csdnimg.cn/20190911103729528.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java 学习笔记
java学习之路
成龙大侠
这个作者很懒,什么都没留下…
展开
-
vscode下解决:“错误: 编码 GBK 的不可映射字符”
出现的错误提示如上图所示。由于长时间没有写过java代码了,刚出现这个错误的时候我也是一脸懵。就在刚刚我有notepad++写的Java源码编译的时候还好好的,到vscode就不行了。错误原因:我们在oracle官网下的在JDK是国际版的,当我们在使用javac编译的时候编译程序首先会获取当前操作系统默认的编码格式GBK,然后JDK就把Java源文件从GBK编码格式转换为Java内部默认的unicode编码格式放入计算机内存中,再然后javac会把转换格式后的文件进行编译成class文件,最..原创 2021-01-08 17:44:52 · 6526 阅读 · 7 评论 -
Java多线程:volatile关键字
在多线程之中,volatile关键字主要是在属性定义上使用,表示此属性为直接数据操作,而不进行副本的拷贝处理。这在一个图书上就将其错误的理解为同步属性了。在正常进行变量处理的时候往往会经历如下几个步骤:获取变量原有的数据内容; 利用副本为变量进行数学计算; 将计算后的变量保存到原始空间之中而如果一个属性上追加了volatile关键字,表示的就是不使用副本,而是直接操作原始变量,相当于...原创 2019-12-02 17:08:19 · 201 阅读 · 0 评论 -
Java多线程:后台守护线程
在多线程里面可以进行守护线程的定义,也就是说如果现在主线程或其他线程还在运行,那么守护线程将一直存在,并且运行在后台状态。Thread类中关于守护线程的操作如下:设置为守护线程:public final void setDaemon(boolean on); 判断是否守护线程:public final boolean isDaemon();范例:使用守护线程public clas...原创 2019-12-02 17:06:26 · 258 阅读 · 0 评论 -
Java多线程:如何优雅的停止多线程
启动多线程使用的是Thread类中提供的start()方法,而如果对于多线程需要进行停止处理,Thread类原本提供有stop()的方法。但是这个方法从JDK1.2就已经废除了,而且除了stop()方法还有另外几个方法也被禁用了:停止多线程:public void stop(); 销毁多线程:public void destroy(); 线程挂起:public final void sus...原创 2019-12-02 17:04:08 · 690 阅读 · 1 评论 -
Java多线程:生产者-消费者模型
生产者生产,消费者消费,理想的情况下是生产者每生产一个产品,消费者就消费一个产品,生产者还没有生产的时候消费者等待,消费者还没有消费完产品的时候生产者等待。class Producer implements Runnable{ // 生产者 private Message msg; public Producer(Message msg) { this.msg = msg;...原创 2019-12-02 17:02:21 · 152 阅读 · 0 评论 -
Java多线程:线程的同步与死锁
在多线程的处理之中,可以利用Runnable描述多个线程操作的资源,而Thread描述每一个线程对象,于是当多个线程访问同一资源的时候,如果处理不当就会产生数据的错误操作。同步问题的引出范例:创建若干个线程对象实现卖票操作class MyThread implements Runnable{ private int ticket = 10; public void run...原创 2019-12-01 19:45:12 · 170 阅读 · 0 评论 -
Java多线程:线程强制运行和线程礼让
所谓线程强制执行指的是当满足于某些条件之后,某一个线程对象将可以一直独占资源,一直到该线程的程序执行结束。范例:观察一个没有强制执行的程序public class Main{ public static void main(String args[]) { Runnable run = ()->{ for(int i = 0; i < 100; i++) {...原创 2019-11-30 17:22:04 · 395 阅读 · 0 评论 -
Java多线程:线程中断
线程的休眠是可以打断的,而这种打断是由其他线程完成的。在Thread类里面提供有这种中断执行的处理方法:判断线程是否被中断:public boolean isInterrupted(); 中断线程执行:public void interrupt();public class Main{ public static void main(String args[]) { Ru...原创 2019-11-27 20:08:03 · 175 阅读 · 0 评论 -
Java多线程:线程的休眠
希望某一个线程可以暂缓执行一次,那么就可以使用休眠处理。在Thread类中提供的休眠的方法如下:休眠:public staticvoidsleep(longmillis) throws InterruptedException 休眠:public staticvoidsleep(longmillis,intnanos)throws InterruptedException ...原创 2019-11-27 11:00:54 · 657 阅读 · 0 评论 -
Java多线程:Callable接口实现多线程
在线帮助文档:https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/Callable.html传统实现多线程一般依靠Runnable,但是Runnable接口有一个缺点:当线程执行完以后无法获取一个返回值。所以从JDK 1.5之后提出了一个新的线程实现接口:java.util.consurrent.Callable接口...原创 2019-11-26 14:08:10 · 651 阅读 · 0 评论 -
Java多线程:基于Runnable接口实现多线程
虽然可以通过Thread类的继承来实现多线程的定义,但是在Java程序里面对于继承永远都是存在单继承局限的,所以在Java里面又提供有第二种多线程的主体定义结构形式:实现java.lang.Runnable接口,此接口定义如下:@FunctionalInterfacepublic interface Runnable{ public void run();}范例:通过Runnab...原创 2019-11-24 15:49:52 · 1037 阅读 · 0 评论 -
Java多线程:Thread类中为什么调用start()方法而不是run()方法
初学Java,多方查找资料加上自己的一点见解。进程与线程参考文章:https://www.cnblogs.com/qianqiannian/articles/7010909.html?tdsourcetag=s_pctim_aiomsg多线程要执行的功能都应该在run()方法中定义。需要注意的是在正常情况下要使用一个类中的方法,那么是要产生这个类的一个实例化对象,然后去调用类中提供的方法,...原创 2019-11-23 11:38:06 · 1610 阅读 · 0 评论 -
Java数据结构:链表
code:package test;interface ILink<E>{ // 设置泛型 public void add(E e); // 在末尾增加节点 public void print(); // 输出节点 public int size(); // 计算节点个数 public boolean isEmpty(); // 判断链表使否为空 public ...原创 2019-11-17 19:47:48 · 142 阅读 · 0 评论 -
命令行模式下如何使用java中的jar命令打包压缩文件
打开cmd或者powershell,然后切换到需要压缩的文件所在目录然后执行jar cvf 生成压缩文件名.jar 被压缩文件名或者jar -cvf 生成压缩文件名.jar 被压缩文件名将 .jar 改成 .zip 即可压缩成zip格式,同理 7z、rar 等格式也是如此jar命令好像不能解压压缩文件到指定文件夹,只能解压到当前文件夹解压命令jar -xvf ...原创 2019-11-06 20:58:48 · 815 阅读 · 0 评论 -
java 方法引用
lambda和方法引用都遵循SAM(single abstract method)规则,即一个抽象类中只有一个抽象方法利用方法引用的概念可以为一个方法定义多个名字,但是要求必须是函数式接口(SAM)。package test;// 方法引用@FunctionalInterface // 函数式接口interface IFunc1<P,R>{ public R c...原创 2019-11-02 22:43:41 · 328 阅读 · 0 评论 -
Java String类的常用操作
由于初学所以会有很多不完善的地方,所以此博客不定时更新。public class Main{ public static boolean check(String str) { for(int i=0; i < str.length(); i++) { if(str.charAt(i) >= '0' && str.charAt(i) &...原创 2019-09-19 16:08:51 · 166 阅读 · 0 评论 -
数据表与简单Java类的映射转换——复杂多对多映射
代码:package test;class Member{ private String mid; private String name; private Role roles[]; public Member() {} public Member(String mid, String name) { this.mid = mid; this.na...原创 2019-09-18 11:25:10 · 221 阅读 · 0 评论 -
JAVA-定义数组操作类
此代码是将一些常用的数组操作方法封装成一个类功能有求最大值,最小值,求和,求平均值,排序,转置,拷贝package test; // 此java文件所在的包import static java.lang.System.out;import java.util.Scanner;import java.util.*;class ArrayUtil{ private int ma...原创 2019-09-11 10:46:26 · 300 阅读 · 0 评论