Java笔记

知识点总结


Thread类

<h3>线程的优先级</h3> <pre><code>设置某个线程优先等级 java为线程提供了10个优先级 优先级可以用整数1-10表示,超出范围会抛出异常 主线程默认优先级为5(数组越大优先级越大) 常量优先级 MAX_PRIORITY :最高优先级10 MIN_PRIORITY :最小优先级1 NORM_PRIORITY:默认优先级</code></pre> <h3>获取线程的优先级</h3> <table> <thead> <tr> <th style="text-align: left;">方法</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">public int getPriority()</td> <td style="text-align: left;">获取线程的优先级方法</td> </tr> <tr> <td style="text-align: left;">public void setPriority(int new Priority)</td> <td style="text-align: left;">设置线程的优先级</td> </tr> </tbody> </table> <h3>Tread</h3> <pre><code>Thread 是一个线程类 位于java.lang 包下</code></pre> <table> <thead> <tr> <th style="text-align: left;">构造方法</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">Tread()</td> <td style="text-align: left;">创建一个线程对象</td> </tr> <tr> <td style="text-align: left;">Tread(String name)</td> <td style="text-align: left;">创建一个指定指定名称的线程对象</td> </tr> <tr> <td style="text-align: left;">Thread(Runnable target)</td> <td style="text-align: left;">创建一个基于Runnable接口实现类的线程对象</td> </tr> <tr> <td style="text-align: left;">Thread(Runable target,string name)</td> <td style="text-align: left;">创建一个Runnable接口实现类,并且具有指定名称的线程对象</td> </tr> </tbody> </table> <pre><code>thread 类的常用方法</code></pre> <table> <thead> <tr> <th style="text-align: left;">方法</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">public void run()</td> <td style="text-align: left;">线程相关的代码写在该方法中,一般需要重写</td> </tr> <tr> <td style="text-align: left;">public void start()</td> <td style="text-align: left;">启动线程的方法</td> </tr> <tr> <td style="text-align: left;">public static void sleep(long m)</td> <td style="text-align: left;">线程休眠m毫米的方法</td> </tr> <tr> <td style="text-align: left;">public void join()</td> <td style="text-align: left;">优先执行调用join() 方法的线程</td> </tr> </tbody> </table> <pre><code>Runnable 接口 只有一个方法run() Runnable是java 中用以实现线程的接口 任何实现线程功能的类都必须实现该接口</code></pre> <h4>线程的生命周期</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/5a7731f9cedf4ec1a964d6c736abd341?showdoc=.jpg" alt="" /></p> <h4>sleep</h4> <pre><code>Thread 类的方法 public static void sleep(long millis) 作用:指定的毫秒数内让正在执行的线程休眠(暂停执行) 参数为休眠的时间,单位是毫秒</code></pre> <h4>join</h4> <pre><code>Thread 类的方法 public final void join() 作用:等待调用该方法的线程结束后才能执行</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/536ca883e74cd65896183aee7511c213?showdoc=.jpg" alt="" /> public final void join(long millis) 作用:等待该线程终止的最长时间为millis毫秒</p> <h3>多线程运行问题</h3> <pre><code>各线程是通过竞争CPU时间而获得运行的机会的 各个线程什么时间得到CPU时间占用多久,是不可预测的 一个正在运行着的线程在什么地方被暂停是不确定的 需要将对象进行锁定 使用关键字 synchronized(同步)[ˈsɪŋkrənaɪzd] 实现</code></pre> <h3>synchronized 使用</h3> <pre><code>public synchronized void saveAccount(){} public static sychronized void saveAccount(){} synchronized(obj){}</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/9faf26fa7f363118a6d3629c520820e5?showdoc=.jpg" alt="" /></p> <h3>线程间的通信</h3> <pre><code> 场景: 问题:账号余额不够了怎么办? 等待存入足够的钱后处理 死锁 两个线程一直处于等待 使用notifyAll()唤醒</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/5ac87eb0c0ad9ace160f1bbac7b58ef5?showdoc=.jpg" alt="" /></p> <pre><code>wait() 方法:中断方法的执行,使线程等待 notify() 方法:唤醒处于等待的某一个线程,使其结束等待 notifyAll() 方法: 唤醒所有处于等待的线程,使它们结束等待</code></pre> <h3>总结</h3> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/8e5166dfe55edc4391f53b66ff852d17?showdoc=.jpg" alt="" /></p>

页面列表

ITEM_HTML