java 中多线程的使用

/**
 * java 多线程
 * 应用程序:可运行的程序
 * 进程:进程正在进行的程序,线程的集合,执行的程序,在进程中一定有个线程是主线程
 * 线程:可以这样说是一个执行顺序
 * 使用多线程提高效率,每个线程都不相互影响,因为是独立运行的
 * 多线程的应用场景:多线程下载,爬虫,ajax异步上传 ,分布式job(同一时间执行多个任务调度)
 *
 * @author Administrator
 * @date 2018/1/24 0024
 */

/**
 * 定义继承Thread类的子类
 */
class fristThread extends Thread {

    /**
     * 这里的run方法就是线程需要执行的任务或执行的代码
     */
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            try{
                Thread.sleep(1000);
            }catch (Exception e){
                e.getMessage();
            }
            System.out.println("线程的id"+ getId()+"run" + i +"子线程的名称"+getName());
        }

    }
}

/**
 * 使用runnable 接口方式
 */
class  secondThread implements Runnable{
    @Override
    public void run() {
        for (int m = 0; m < 30; m++) {
            System.out.println("子线程run"+m);
            
        }

    }
}


public class Process {
    /**
     * 1:使用Thread类方式
     * 2:使用runnable 接口方式
     * 3:使用匿名内部类的方式
     * 4:callable
     */

    public static void main(String[] args) {

        /**
         * 怎样调用线程
         */
        fristThread fristThread = new fristThread();
        secondThread secondThread = new secondThread();

        /**
         * 启动线程,不是调用run方法,而是使用start方法,系统会把run()方法当成线程执行体来处理
         * 开启多线程,代码不会从上向下执行
         * 同步:代码从上到下执行(单线程)
         * 异步:多线程,代码不会从上向下执行
         *
         */
        fristThread.start();
        //runnable 是接口,没有start方法
        Thread thread = new Thread(secondThread);
        thread.start();
        /*主线程*/
        System.out.println("主线程的id"+Thread.currentThread().getId()+"主线程的名称"+Thread.currentThread().getName());
        for (int j = 0; j < 30; j++) {
            System.out.println("main线程"+j);
            
        }


    }

}
/**
 * 守护线程:和main相关
 * 用户线程:用户自己创建的线程,若主线程停止掉,不会影响用户线程
 * gc线程:也属于守护线程,和主线程一起销毁
 * @author Administrator
 * @date 2018/1/24 0024
 */
public class Test01 {

    public static void main(String[] args) {
        /**
         * 使用匿名内部类的方式实现
         */
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("子线程i" + i);


                }
            }
        });
        /*该线程为守护线程,和主线程一块销毁*/
       /* thread.setDaemon(true);*/
        thread.start();
        for (int i = 0; i <5 ; i++) {
            System.out.println("主线程i"+i);
            
        }
        System.out.println("主线程加载完毕。。。。。。。");
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值