java中JSON,多线程

一、JSON

1.JSON定义

(1.)轻量级的文本数据交换格式

(2.)具有自我描述性【看到某个JSON数据就能知道它的特点】

(3.)比XML传输速度快【跨平台】

2.JSON的语法规则

(1.)语法

{
"name" : " jason" ,
"age"  :20,
"skills":["Java","Hadoop","Python"]
}

 (2.)构成要素:1.对象{}  2.数组[]   3.属性名:属性值    4.逗号(多个数据之间由逗号分隔)。

(3.)属性值类型种类:字符串、数字、布尔值、null、数组、对象

3.JSON实战

步骤1:JSON解析框架 fastjson-1.2.47.jar【使用maven的pom依赖管理】

步骤2:创建maven工程,并创建标准目录

步骤3:实现java对象转成JSON对象

步骤4:创建java对象

1.java对象转成JSON对象

student类:

public class student {
  private   String name;
   private int age;
   private List<String> love;

    public student() {
    }

    public student(String name, int age, List<String> love) {
        this.name = name;
        this.age = age;
        this.love = love;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<String> getLove() {
        return love;
    }

    public void setLove(List<String> love) {
        this.love = love;
    }
}

Text类:

  public static void main(String[] args) {
        String []array=new String[]{"睡觉","跑","球"};
        List<String> list= Arrays.asList(array);
        student stu = new student("张三",18,list);
        String s= JSON.toJSON(stu).toString();
        System.out.println(s);
    }

2JSON对象转成java对象

1.Student类(同上)

2.Text类:

    public static void main(String[] args) {
        String ss="{\"love\":[\"睡觉\",\"跑\",\"球\"],\"name\":\"张三\",\"age\":18}";
        student stu =JSON.parseObject(ss,student.class);
        System.out.println(stu.getName());
        System.out.println(stu.getAge());
        System.out.println(stu.getLove());
    }

二、多线程:

  1. 进程和线程定义:

进程:应用程序的执行实例【一个应用对应一个进程】

线程:cpu调用和分派基本单元,进程当中执行的最小单位

2.创建线程的种类

(1.)继承java.lang.Thread类

(2.)实现java.lang.Runnable接口

3.继承java.lang.Thread类    单线程:

public class MyDemo01 extends  Thread {
           public void run() {
               for(int i=0;i<100;i++){
        System.out.println(Thread.currentThread().getName()+"\t"+i);
    }
}

    public static void main(String[] args) {
        MyDemo01 myDemo01 = new MyDemo01();
        myDemo01.start();
    }
}

4.继承java.lang.Thread类    多线程:

public class MyDemo02 extends  Thread {
           public void run() {
               for(int i=0;i<100;i++){
                   System.out.println(Thread.currentThread().getName()+"\t"+i);
               }
        }

    public static void main(String[] args) {
        MyDemo02 a1 = new MyDemo02();
        a1.start();
        //  调用方法  a1.run();
        MyDemo02 a2 = new MyDemo02();
        a2.start();
    }

5.实现Runnable接口 创建单线程:

public class MyDemo03 implements Runnable {
    //步骤2:实现run()方法
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+"\t"+i);
        }
    }

    public static void main(String[] args) {
        MyDemo03 myDemo03 = new MyDemo03();
        Thread thread = new Thread(myDemo03);
        thread.start();
    }
}

6.实现Runnable接口创建多线程:

public class MyDemo04 implements Runnable {
  
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+"\t"+i);
        }
    }

    public static void main(String[] args) {
        MyDemo04 myDemo04 = new MyDemo04();
        Thread thread1= new Thread(myDemo04);
        Thread thread2 = new Thread(myDemo04);
        thread1.start();
        thread2.start();
    }
}

7.线程的状态:

(1.)正常情况下流程:创建状态—>就绪状态—>运行状态—>死亡状态

(2.)异常情况下流程:创建状态—>就绪状态—>运行状态—>阻塞(休眠)状态—>就绪状态—>运行状态—>死亡状态

8.线程优先级:

(1.)线程优先级由1~10表示,1最低,默认优先级为5

(2.)优先级高的线程CPU资源的概率较大

(3.)线程休眠:核心要点:sleep()可以使线程阻塞【休眠】

8.线程实战:

(1.)Site类:

public class Site implements Runnable {
    //1.记录剩余票数
    private  int count=100;
    //2.记录买到第几张票
    private  int num=0;
    @Override
    public void run() {
        //3.死循环,反复去抢票
        while (true) {
            synchronized (Site.class) {
                //4.如果票抢购完毕,则退出循环
                if (count <= 0) {
                    break;
                }
                num++;//每抢一次加1
                count--;//总票数每次减1

                //休眠 模拟网络延时,看到抢购的过程
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(
                        Thread.currentThread().getName() + "抢购第" + num + "张票,剩余" + count + "张票"
                );
            }
        }
    }
}

(2.)Text类:

 public static void main(String[] args) {
        Site site = new Site();
        Thread thread1 = new Thread(site,"孙三");
        Thread thread2 = new Thread(site,"钱二");
        Thread thread3 = new Thread(site,"赵一");
        System.out.println("****************************");
        thread1.start();
        thread2.start();
        thread3.start();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值