2020.8.5多线程

                        线程

1.继承Thread类创建线程
(1)定义MyThread类继承Thread类
(2)重写run()方法,编写线程执行体
(3)创建线程对象,调用start()方法启动线程
启动线程是否可以直接调用run()方法?–不可以
(1)只有主线成一个执行路径
(2)依次调用了连词run()方法
(3)run()方法被当做main()中的普通方法执行,失去了线程的意义
调用start(),是多条执行路径,主线程和子线程并行交替执行

2。实现Runnable接口创建线程
(1)定义Myrunnable类实现Runnable接口
(2)实现run方法,编写线程执行体
(3)创建线程对象,调用start()方法启动线程
Thread(Runnable target)
Thread(Runnable target,String name)

3.比较两种创建线程的方式(推荐使用接口)
(1)继承Thread类
编写简单,可直接操作线程
适用于单继承
(2)实现Runnable接口
避免单继承局限性
便于共享资源

4.线程的状态:

5.线程调度:按照特定机制为多个线程分配CPU的使用权

1.线程设置优先级:
setPriority(Thread.MAX.PRIORITY);
setPriority(Thread.MIN.PRIORITY);
2.线程休眠:
Tread.sleep(毫秒)
3.join()

4.yield()只提供礼让的一种可能,但是不能保证一定会实现礼让
暂停当前线程,允许其它具有相同优先级的线程获得运行机会,该线程处于就绪状态,不转为阻塞状态

总结:
■yield(
暂停当前正在执行的线程对象, 并执行其他线程,线程礼让
◆只是提供一种可能,但是不能保证一定会实现礼让
■请注意区分join()
yield():礼让,放手。当前线程处于就绪状态
◆join():阻塞当前线程,直到其他线程执行完毕,当前线程才进入就绪状态
题目:

6.线程同步:
同步方法:结果就是控制只能一个进程进入方法

synchronized (this){}可控制代码块

■多个并发线程访问同一 资源的同步代码块时:
1.同一时刻只能有一个线程进入synchronized ( this )同步代码块,当一个线程访问一个synchronized ( this )同步代码块时,其他synchronized ( this )同步代码块同样被锁定
2.当一个线程访问一-个synchronized ( this )同步代码块时,其他线程可以访问该资源的非synchronized ( this )同步代码

7.线程安全:

你可能感兴趣的:(多线程,java,thread)