JAVA多线程设计模式之多线程基础

启动方式

利用Thread类的子类

  • 产生Thread子类MyThread的实例MyThread t= new MyThread(),主线程启动新线程t.start()
    调用start方法,会有两种操作:启动新的线程;调用run方法
  • 所有线程(不包括daemon thread守护线程)结束时程序也就结束了

利用Runnable接口的实现类的实例

Runnable接口是java.lang.Package里的接口

Public interface Runnable{
    Public abstract void run();
}

Printer为Runnable接口的实现类

public class Pprinter implements Runnable{
    private String message;
    public Printer(String meaadge){
        this.message = message;
    }
    public void run(){
        for(int i=0;i<100;i++){
            System.out.print(message);
        }
    }
}

Main类中建立接口实现类的实例,将该实例传给Thread的构造器,调用start方法来启动线程

new Thread(new Printer("Good")).start();

//或者写成
Runnable r = new Printer("Good");
Thread t = new Thread(r);
t.start();

共享互斥

synchronized方法/同步方法

当一个方法加上关键字synchronized声明后,就可以让一个线程操作这个方法。同一个实例的synchronized无法被两个以上线程获取

synchronized阻挡/synchronized语句

只启动方法里的一部分线程,而并非启动整个方法时,可以使用synchronized阻挡

synchronized(表达式){
    
}

线程协调(线程必须获取欲调用实例的锁定)

wait方法:把线程放入wait set

使用wait方法时,线程便进入wait set

//当前线程进入obj的wait set中,或称当前线程在obj上wait
obj.wait();

//当前线程在this上wait
wait();
this.wait();

notify方法:从wait set拿出线程

//从obj的wait set中唤醒一个线程
obj.notify();

//从this的wait set中唤醒一个线程
notify();
this.notify();

notifyAll方法:从wait set拿出所有线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值