zoukankan      html  css  js  c++  java
  • java 多线程

    实例

    class MyThread extends Thread {
        
        private int i = 0;
    
        @Override
        public void run() {
            for (i = 0; i < 100; i++) {
                System.out.println(Thread.currentThread().getName() + " " + i);
            }
        }
    }
    public class ThreadTest {
    
        public static void main(String[] args) {
            for (int i = 0; i < 100; i++) {
                System.out.println(Thread.currentThread().getName() + " " + i);
                if (i == 30) {
                    Thread myThread1 = new MyThread();     // 创建一个新的线程  myThread1  此线程进入新建状态
                    Thread myThread2 = new MyThread();     // 创建一个新的线程 myThread2 此线程进入新建状态
                    myThread1.start();                     // 调用start()方法使得线程进入就绪状态
                    myThread2.start();                     // 调用start()方法使得线程进入就绪状态
                }
            }
        }
    }

    start 和 run的区别

    线程的几种状态http://lavasoft.blog.51cto.com/62575/99153/

    线程的名称

      

     

     创建线程的第二种方法

    手册中的操作实例

    继承方式和实现 方式 的区别

    实现方式 避免了继承的局限性。建议是用继承方式

    多线程的安全问题

    问题产生

    问题解决

    同步的前提

    同步的优点和缺点

     

    如果想要函数运行同步程序,只需要用synchronized 来修饰当前 方法

    如何发现程序是否有同步的隐患 (多线程操作共享数据)

    问题

    程序修改  --- 调用同一个对象就是同一个锁了

     如果同步函数被静态修饰呢,上面的同步函数和同步代码块将用的不是一个对象 

     

    接下来看下面的问题

     单例模式中 懒汉式设计模式加上 同步锁。解决了并发时重复实例化的问题

    每一次进来都进行判断,效率非常的低。 如何解决判断次数过多的问题。

    在代码块中加锁,进行双重判断。如果条件不满足就不判断是否有锁了

             

     多线程会产生死锁的问题

    http://blog.csdn.net/pjz90/article/details/8655646

     多线程新的操作。原来前面的视频都是旧版本的啊   ::>_<::

    Lock  和   Condition

    也就是这几步操作 

    生产者操作

    消费者操作

     停止线程

     

    守护线程

    如果主线程结束了,此线程自动退出

    join

    两个线程 和 主线程 在交替执行。 join后, t1拿到执行权,主线程等待,t1执行完,主线程才开始执行。

    至于其他子线程没什么太大关系。

     优先级&yield方法

    优先级:抢资源的频率

     

    默认的优先级都是5  (优先级一共10级)  

    1:MIN  ,   5:NORM,10:MAX

     

    Java线程中有一个Thread.yield( )方法,很多人翻译成线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行。

    yield  释放优先级,先让其他线程执行

  • 相关阅读:
    视频相关一些基础概念解析
    git
    mysql数据库查找类型不匹配
    matlab转python
    神经网络(二)
    python图片处理(三)
    python图片处理(二)
    python图片处理(一)
    python图片处理和matlab图片处理的区别
    MapReduce原理与设计思想
  • 原文地址:https://www.cnblogs.com/zhaoyang-1989/p/6711240.html
Copyright © 2011-2022 走看看