美文网首页
九、Java语言基础9---多线程(创建线程,安全问题)

九、Java语言基础9---多线程(创建线程,安全问题)

作者: SkyFireDragon | 来源:发表于2019-04-12 10:52 被阅读0次

这些是笔者学习Java基础时的笔记,供后来者参考(学习是持之以恒的的事情,一定要坚持哟,切记!切记!!!)

1、多线程

(1)进程:正在进行的程序。
         线程:进程中的一个执行单元。
         一个进程中有多个线程在执行时,就成了多线程问题。

         多线程解决的问题:可以让多部分代码同时执行。

         例子:java中多线程例子
              main线程和垃圾回收线程同时执行。
              System.gc();//启动垃圾回器,垃圾回收器在回收每个对象垃圾时,
                                  //都会自动调用改对象的 finalize方法。

(2)为什么要启动多线程?
        因为有多部分代码需要同时执行。

(3)创建线程的两种方法
        <1>定义类,继承Thread类,覆盖Thread类中的run方法。
                实例(run方法和start方法的区别、
                          Thread.currentThread().getName()和this.getName()的区别):

                class ThreadDemo extends Thread
                {
                        String name;
                        ThreadDemo(String name){
                            this.name = name;
                        }

                        public void run(){
                               for(int i=0;i<10;i++){
                                    System.out.println(name+"------>"+Thread.currentThread().getName());
                                }
                        }
                }

                class Demo 
                {
                        public static void main(String[] args) 
                        {
                                ThreadDemo demo1 = new ThreadDemo("小明");
                                ThreadDemo demo2 = new ThreadDemo("哈哈");
                                //demo1.run();
                                //demo2.run();
                                demo1.start();
                                demo2.start();
                        }
                }

                注:通过线程对象直接调用run方法时,并没有创建新的对象。
                    调用start方法时才创建了新的线程。

       <2>创建线程的第二种方法(好处:避免了单继承的局限性)
            由来:Runnable接口其实就是将线程的任务进行的封装。

            使用:
              1、实现Runnable接口,创建类
              2、类中实现Runnable中run()方法。
              3、创建对象。
              4、创建线程对象,并将实现Runnable对象类的对象,传给线程对象。
              5、调用线程对象的start()方法。

            class Ticket implements Runnable{
                private static int num=100;
                public void run(){
                    while(true){
                        if(num>0){
                            System.out.println(Thread.currentThread().getName()+"...sale..."+num--);
                        }else{
                            break;
                        }
                    }
                }
           }

            public class SellTicket {

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

(4)线程的状态

pCGCl71&690.jpeg
(5)多线程的应用:售票的例子

  class Ticket extends Thread{
    private static int num=100;

    public void run(){
      while(true){
          if(num>0){
              System.out.println(Thread.currentThread().getName()+"...sale..."+num--);
          }else{
              break;
          }
        }
    }
}

public class SellTicket {
  public static void main(String[] args){
    Ticket t1 = new Ticket();
    Ticket t2 = new Ticket();
    Ticket t3 = new Ticket();
    Ticket t4 = new Ticket();
    t1.start();
    t2.start();
    t3.start();
    t4.start();
  }
}

相关文章

  • 九、Java语言基础9---多线程(创建线程,安全问题)

    这些是笔者学习Java基础时的笔记,供后来者参考(学习是持之以恒的的事情,一定要坚持哟,切记!切记!!!) 1、多...

  • Java面试题总结(上)

    多线程、并发及线程的基础问题 1)Java 中能创建 volatile 数组吗?能,Java 中可以创建 vola...

  • Java 面试题及答案

    多线程、并发及线程的基础问题 1)Java 中能创建 Volatile 数组吗? 能,Java 中可以创建 vol...

  • 2016java面试题总结

    多线程、并发及线程的基础问题: 1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 vo...

  • Java程序员不得不会的124道面试题(含答案)

    多线程、并发及线程的基础问题 1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 vol...

  • 133道 Java 面试题及答案

    多线程、并发及线程的基础问题 1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 vol...

  • Java常见问题

    一、多线程、并发及线程的基础问题 1)Java 中能创建 Volatile 数组吗? 能,Java 中可以创建 v...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • Java后端知识体系

    基础重点(必须扎实) Java语言 语言基础 《Java核心技术》基础语法面向对象常用API异常处理集合IO多线程...

  • 10.3多线程详解

    Java高级-多线程 多线程创建 多线程通讯 线程池 1.多线程创建 thread/runnable图:继承Thr...

网友评论

      本文标题:九、Java语言基础9---多线程(创建线程,安全问题)

      本文链接:https://www.haomeiwen.com/subject/yayqwqtx.html