Java.SE01.多线程



1.进程,线程:

         所谓进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。

         进程中所包含的一个或多个执行单元称为线程(thread)。

         一个线程是进程的一个顺序执行流.

2. 并发:

        微观上所有进程和线程是走走停停的,宏观上都在运行,这种都运行的现象叫并发,但是不是绝对意义上的“同时发生。

       线程调度机制是OS提供的一个用于并发处理的程序。java虚拟机自身也提供了线程调度机制,用于减轻OS切换线程带来的更多负担。


Java.SE01.多线程_第1张图片

3.创建线程

          java.lang.Thread类是线程类;

Thread创建线程:

01.    public class TestThread extends Thread{
02.        
03.        public void run() {
04.            for(int i=0;i<10;i++){
05.                System.out.println("我是线程");
06.            }
07.        }
08.    }

启动线程:

    Thread thread = new TestThread();//实例化线程 
    thread.start();//启动线程 

匿名类方式创建线程 :

Thread thread  = new Thread(){    //匿名类方式创建线程 
        public void run(){
            //线程体    
        }
    };
    thread.start();//启动线程


4.获取线程信息:        

long getId():返回该线程的标识符 String getName():返回该线程的名称 int getPriority():返回线程的优先级 Thread.state getState():获取线程的状态 boolean isAlive():测试线程是否处于活动状态 boolean isDaemon():测试线程是否为守护线程 boolean isInterrupted():测试线程是否已经中断
public class TestThread {
02.        public static void main(String[] args) {
03.            Thread current = Thread.currentThread();
04.            long id = current.getId();
05.            String name = current.getName();
06.            int priority = current.getPriority();
07.            Thread.State state = current.getState();
08.            boolean isAlive = current.isAlive();
09.            boolean isDaemon = current.isDaemon();
10.            boolean isInterrupt = current.isInterrupted();
11.            System.out.println("id:"+id);
12.            System.out.println("name:"+name);
13.            System.out.println("priority:"+priority);
14.            System.out.println("state:"+state);
15.            System.out.println("isAlive:"+isAlive);
16.            System.out.println("isDaemon:"+isDaemon);
17.            System.out.println("isInterrupt:"+isInterrupt);
18.        }
19.    } 


5.线程优先级:

Thread.MIN_PRIORITY //最低1

Thread.MAX_PRIORITY //最高10

Thread.NORM_PRIORITY //默认5

6.守护线程

         守护线程与普通线程在表现上没有什么区别;

         守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。

7.Thread的静态方法sleep用于使当前线程进入阻塞状态:


8.锁机制:

          Java提供了一种内置的锁机制来支持原子性:

          同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。

          ①静态方法锁:                    

01.   public synchronized static void xxx(){
02.        ….
03.    }


9.线程安全API/非线程安全API

          非线程安全:
                    StringBuilder; ArrayList; LinkedList ;HashSet; HashMap 
          线程安全:
                    StringBuffer; Vector;Hashtable;


10.线程池:

             主要作用:①控制线程数量  ②重用线程


你可能感兴趣的:(Java)