首页 > 编程语言 > 详细

Java多线中基础知识整理

时间:2019-02-20 21:17:40      阅读:255      评论:0      收藏:0      [点我收藏+]

Java中的两种线程:

  1. 守护线程:主线程停止后,守护线程会立即停止(例如:GC线程)Java中使用setDaemon(true)方法来设置为守护线程。
  2. 用户线程:用户自定义的线程,当主线程停止后,用户不会立即停止。

Java中多线程的几个相关状态:

  新建状态、就绪状态(调用start方法后)、运行状态、阻塞状态及死亡状态。

Java多线程中常用的方法:

  join():将执行权让给被调用方。

  setPriority():设置获取CPU调度优先级。

  yield():放弃当前CUP执行权,和其他线程在一次竞争CPU使用权。

 Java多线程中锁的分类:

  内置锁:每一个对象中都可以用来实现同步的锁。特点:1.当程序进入同步代码快时自动获取锁,程序执行完毕后或者有异常抛出时自动释放锁。2.该锁是互斥锁。3.使用synchronized修饰。

  注意:1.同步方法使用的是this锁。2.静态同步函数采用的锁是字节码文件对象(类.class)。

 

Java多线程解决方案:

  ThreadLocal:为每个线程提供一个自己的局部变量。

 

 

 

 

=================================================================================

多线程使用不当导致的问题集锦:

  1.当在使用多线程时,线程间同时对某个共享的全局变量或者静态变量进行写操作时,将会发生数据冲突问题。

eg:

 

 1 @SuppressWarnings("static-access")
 2 public class MultiThread implements Runnable {
 3 
 4     private Integer count = 100;
 5     
 6     @Override
 7     public void run() {
 8         
 9         while(count > 0) {
10             try {
11                 Thread.currentThread().sleep(100);
12             } catch (InterruptedException e) {
13                 e.printStackTrace();
14             }
15             sale();
16         }
17     }
18     
19     private void sale() {
20         if(count > 0) {
21             System.out.println("第" + (100 - count + 1) + "张票售出");
22             count--;
23         }
24     }
25 
26     public static void main(String[] args) {
27         
28         MultiThread multiThread = new MultiThread();
29         
30         Thread m1 = new Thread(multiThread, "1号窗口");
31         Thread m2 = new Thread(multiThread, "2号窗口");
32         
33         m1.start();
34         m2.start();
35     }
36     
37 }

 

技术分享图片

 

Java多线中基础知识整理

原文:https://www.cnblogs.com/0ziyu0/p/10409101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!