入门多线程

Java 虚拟机允许应用程序并发地运行多个执行线程main方法是单线程的

创建线程

方法一:
将类声明为 Thread 的子类,该子类应重写 Thread 类的 run 方法,接下来可以分配并启动该子类的实例
继承 - 重写 - 创建对象 - 启动

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println(getName() + "\tHelloWorld");
    }
}
public class ThreadTest {
    public static void main(String[] args) {
        //void setName(String name): 改变线程名称,使之与参数 name 相同
        //String getName(): 返回该线程的名称

        MyThread mt = new MyThread();
        mt.setName("线程一");
        mt.start();

        MyThread mt1 = new MyThread();
        mt1.setName("线程二");
        mt1.start();
    }
方法二:
声明实现 Runnable 接口的类,该类然后实现 run 方法
然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动

public class MyThread2 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; ++i) {
            //static Thread currentThread() :返回对当前正在执行的线程对象的引用
            System.out.println(Thread.currentThread().getName() + "=" + i);
        }
    }
}
public class ThreadTest2 {
    public static void main(String[] args) {
        //method();
        //这种方法创建的线程可以分别对实现Runnable 接口的类中成员变量赋值
        MyThread2 mt = new MyThread2();
        //Thread(Runnable target) :分配新的 Thread 对象
        Thread t = new Thread(mt);
        t.setName("线程一");
        t.start();

        MyThread2 mt1 = new MyThread2();
        Thread t1 = new Thread(mt1);
        t1.setName("线程二");
        t1.start();
    }
     private static void method() {
        //这种方法创建的线程共享实现Runnable 接口的类中的成员变量的值
        MyThread2 mt = new MyThread2();
        //Thread(Runnable target) :分配新的 Thread 对象
        Thread t = new Thread(mt);
        t.setName("线程一");
        t.start();

        Thread t1 = new Thread(mt);
        t1.setName("线程二");
        t1.start();
    }
}

线程同步

使用关键字synchronized 
关键字synchronized可以修饰方法和代码块 
synchronized(锁对象){ } 
public synchronized void method(){ } 
public static synchronized void method(){ }

同步效率低,安全性高
非同步效率高,安全性低
非静态的同步方法的锁对象是this
静态的同步方法的锁对象是当前类的字节码对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值