java 多线程

线程的实现
1.在java中,线程的实现有两种:
                       继承Thread类
                       实现Runnable接口
2.Thread类 :  必须重写run()方法
                         定义格式:
                                   class className  extends Thread{
                                              run(){};
                                                }
3.Runnable接口  :
public class MyRunnable implements Runnable{
    private String name;
    public MyRunnable(String name){
        this.name = name;
    }
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println(name+":"+i);
        }

    }
public class ThreadDemo {
    public static void main(String[] args) {
       /* MyThread t1 = new MyThread("A");
        MyThread t2 = new MyThread("B");

        t1.start();
        t2.start();*/
        MyRunnable r1 =new MyRunnable("A");
        MyRunnable r2 =new MyRunnable("B");

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);
        t1.start();
        t2.start();

线程的状态
创建状态:准备好了一个多线程的对象
就绪状态:调用了start()方法,等待CPU进行调度
运行状态:执行run()方法
阻塞状态:暂时停止执行,可能将资源交给其他程序使用
终止状态(死亡状态):线程销毁
线程的常用方法
1.取得线程名称 : getName()
2.取得当前线程对象 :currentThread()
3.判断线程是否启动:isAlive()
4.线程的强行运行:join()
5.线程的休眠 :sleep()
class RunnableDemo implements Runnable{
    private String name;
     public RunnableDemo(String name){
         this.name = name;

      }
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            try {
                //4.线程的休眠
                Thread.sleep(1000);
                System.out.println(name +":"+i);
            } catch (InterruptedException e) {
                e.printStackTrace();

            }
            //1.取得线程对象名称
//          System.out.println("当前线程对象:"+Thread.currentThread().getName());
        }
    }
}
public class ThreadDemo {
    public static void main(String[] args) {
        RunnableDemo r1 =new RunnableDemo("A");
        Thread t1 = new Thread(r1);
        //2.判断线程是否启动
//      System.out.println(t1.isAlive());
        t1.start();
//       System.out.println(t1.isAlive());
        //3.线程的强行执行
       /* for (int i = 0; i < 50; i++) {
            if (i >10) {
                try {
                    t1.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("主线程"+i);
        }
*/
    }
}
线程同步
1.同步代码块 :  在代码块上加上“synchronized”关键字
2.同步代码块格式:  synchronized(同步对象){
                                                      需要同步的代码块
                                                                     }


3.同步方法: 除了代码块可以同步,方法也是可以同步的
4.方法同步格式:
                           synchrionized    void  方法名称(){
                                                                                 
                                                                                   }

线程的生命周期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值