Java中的两种线程:
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 }
原文:https://www.cnblogs.com/0ziyu0/p/10409101.html