java线程程笔记-继承方式实现多线程程+程序进程线程的辨析

1.解释什么叫做程序,进程和线程?
指为完成特定任务用某种语言编写的一组指令的集合,指一段静态的代码
进程指程序的一次执行过程,或是正在运行的一段程序,程序是静态的进程是动态的,进程是资源分配的单位
线程,程序可进一步细化为线程是程序内部的一条执行路径
线程作为调度和执行的单位每个线程拥有独立的运行栈和程序计数器(pc)线程的切换开销小
方法一
1.问题一,是否能同调用run(),来开辟线程
2.问题二,通过反复调用.start(),是否能开辟多个线程,不能再次调用会报错

package day01;

/*创建一个Thread类的子类
重写Thread 类的run()方法//将此线程的操作声明在run之中
创建Thread类的子类
通过此对象调用start()的方法
 */
class MyThread extends Thread{
    public void run() {
        for(int i=1;i<=100;i++)
        {
            if(i%2==0){
                System.out.println(i);
            }
        }
    }
}
public class threadStudy01 {
    public static void main(String args[]){
        //创建子类的对象
       MyThread thread= new MyThread();
       //启动另一个线程,调用当前线程的run()方法
       //不要写thread.run(),这还是主线程的思路
       thread.start();
       //输出这步仍然在主线程之中
       System.out.println("hollow world");
    }
}

运行结果的顺序看执行的速度
在这里插入图片描述
//可以采用匿名类

package day01;

/*创建一个Thread类的子类
重写Thread 类的run()方法//将此线程的操作声明在run之中
创建Thread类的子类
通过此对象调用start()的方法
 */
public class ThreadStudy01 {
    public static void main(String args[]){
        //使用匿名类实现三个线程同时进行
        new Thread(){
            @Override
            public void run() {
                for(int i=0;i<100;i++) {
                    if(i%2==0){
                        System.out.println(Thread.currentThread().getName()+":"+i);
                    }
                }
            }
        }.start();
        new Thread(){
            @Override
            public void run() {
                for(int i=0;i<100;i++) {
                    if(i%2!=0){
                        System.out.println(Thread.currentThread().getName()+":"+i);
                    }
                }
            }
        }.start();

        System.out.println("hollow world");
    }
}



package day01;

/*创建一个Thread类的子类
重写Thread 类的run()方法//将此线程的操作声明在run之中
创建Thread类的子类
通过此对象调用start()的方法
2.run();补充run()类型的不能抛异常只能捕获异常因为父类没有抛异常的语句,子类重载时也不能写
3.currentThread();静态方法
4.getName();获取当前线程的名字
5.setName();设置当前线程的名字
6.yield();释放cpu的执行权。
8.join();抢占cup的执行全,抛异常的命令
9.sleep(Long  millitime);让当前线程millitime时间内不执行,处于阻塞状态;抛异常的命令
10.getPriority();
线程的优先级
1.MAX_PRIORITY:10//类中的静态常量Thread.MAX_PRIORITY
2.MIN_PRIORITY:1
3.NORM_PRIORITY:5
 */
public class ThreadStudy01 {
    public static void main(String args[]){
        //使用匿名类实现三个线程同时进行
        new Thread(){
            @Override
            public void run() {
                for(int i=0;i<100;i++) {
                    if(i%2==0){
                        System.out.println(Thread.currentThread().getName()+":"+i);
                    }
                }
            }
        }.start();
        new Thread(){
            @Override
            public void run() {
                for(int i=0;i<100;i++) {
                    if(i%2!=0){
                        System.out.println(Thread.currentThread().getName()+":"+i);
                    }
                }
            }
        }.start();
   /*
   线程的调度
   1.抢占式:高优先级的线程抢占cpu
   同优先级的符合先到先出的队列策略,对高优先级使用抢占式策略
   线程优先级
    */
        System.out.println("hollow world");
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值