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

    如果在一个死去的线程上面调用start方法 会抛出java.lang.IllegalThreadStateException异常

    调用Thread.sleep方法之后 线程在苏醒之后 返回到可运行状态 而并非是运行状态

    线程的优先级范围在1~10之间 JVM线程调度是基于优先级的抢先调度机制

    线程优先级是没有保证的 可能多个优先级映射为一个优先级

    默认优先级是5 三个常量分别是 MAX_PRIORITY MIN_PRIORITY NORM_PRIORITY

    Thread.yield() 是让当前运行线程回到可运行状态 以允许具有相同优先级的其他进程获得运行机会 但是实际中无法保证yield()达到让步目的 因为让步的线程还有可能被线程调度程序再次选中。

    thread.join() 是将thread线程插入当前线程 在thread线程执行完毕之后 再执行当前线程

    线程睡眠时 所持有的任何锁都不会释放

    线程可以获得多把锁

    尽量缩小同步的范围 降低同步对并发的损害

    同步静态方法 需要用类对象来进行同步

    死锁的实例:

    package com.basis;
    
    class Test implements Runnable {
        private boolean flag;
    
        public Test(boolean flag) {
            super();
            this.flag = flag;
        }
    
        @Override
        public void run() {
            if (flag) {
                while (true) {
                    synchronized (MyLock.locka) {
                        System.out.println("if locka");
                        synchronized (MyLock.lockb) {
                            System.out.println("if lockb");
                        }
                    }
                }
            } else {
                while (true) {
                    synchronized (MyLock.lockb) {
                        System.out.println("else lockb");
                        synchronized (MyLock.locka) {
                            System.out.println("else locka");
                        }
                    }
                }
            }
        }
    }
    
    class MyLock {
        static Object locka = new Object();
        static Object lockb = new Object();
    }
    
    public class DeadLock {
    
        public static void main(String[] args) {
            Thread t1 = new Thread(new Test(true));
            Thread t2 = new Thread(new Test(false));
            t1.start();
            t2.start();
        }
    }
  • 相关阅读:
    直接插入排序
    希尔排序
    堆排序
    红黑树
    hashMap原理
    JAVA随笔4
    JAVA随笔3(集合框架,流)
    Linux环境下如何生成core文件
    Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
    MediaWiki搭建步骤
  • 原文地址:https://www.cnblogs.com/Knuth/p/3444674.html
Copyright © 2011-2022 走看看