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

    public class 多线程 {
        static boolean flag = true;
        static class t1 implements Runnable{
            @Override
            public void run() {
                while (true){
                   Systrem.out.println("11");
                }
    
            }
        }
        public static void main(String[] args) throws IOException {
            new Thread(new t1()).start();
        }
    }        
    public class 多线程 {
        public static void main(String[] args) throws IOException {
            new Thread(() -> {
                ...
            }).start();
        }
    }

    synchronized的理解

    1  控制变量时使用锁代码块
    2  要注意锁代码块是放在循环里面还是外面
    3  sleep不会释放锁 wait会释放资源
    4 我感觉锁对象是一个字符串比较好使 , 使用this 比较常

     死锁

    public class 死锁 {
        public static void main(String[] args) {
            new Thread(() -> {
                synchronized ("aaa"){
                    System.out.println("aaa等待bbb锁");
                    //为了防止第二个线程还未启动便将bbb锁执行完
                    for (int i = 0; i < 1000000; i++) {
                        int k=0;k++;
                    }
                    synchronized ("bbb"){
                        System.out.println("aaa执行bbb");
                    }
                }
            }).start();
            new Thread(() -> {
                synchronized ("bbb"){
                    System.out.println("bbb等待aaa锁");
                    synchronized ("aaa"){
    
                    }
                }
            }).start();
        }
    }

     线程握手

    //线程握手的synchronized实现
    
    //线程握手的write()和notify()实现
    我凝视这恒星,等待这那场风暴,我已经准备好了
  • 相关阅读:
    绿色版Notepad++ 加右键带图标菜单
    C#中string和StringBuilder的区别
    C#中string和String的区别
    C#中is和as的区别
    C#中抽象类(abstract)和接口(interface)的相同点与区别
    c++串口通信实例
    vs2017常用快捷键
    Qt编译opencv找不到头文件
    Qt常用快捷键
    二维数组和指针
  • 原文地址:https://www.cnblogs.com/cheng5350/p/11947598.html
Copyright © 2011-2022 走看看