码迷,mamicode.com
首页 > 编程语言 > 详细

多线程学习..害慢慢写吧

时间:2020-03-31 23:00:49      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:for   学习   line   override   线程   tom   tar   name   sys   

多线程

  • 线程就是独立的执行路径;

  • 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程; .

  • main()称之为主线程,为系统的入口,用于执行整个程序;

  • 在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能认为的干预的。

  • 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;

  • 线程会带来额外的开销,如cpu调度时间,并发控制开销。

  • 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

 

三种创建方式

技术图片

 

 

调用run()与start()

 

 

 

 技术图片

 

 

 

技术图片

 

 

 //创建线程方式一:继承Thread类,重写Run方法,调用Start开启线程
 //总结:线程开启不一定立即执行,由cpu调度执行
 public class TestThread01 extends Thread{
     @Override
     public void run() {
         //run方法线程体
         for (int i = 0; i < 20; i++) {
             System.out.println("副线程0000000");
        }
    }
 ?
     public static void main(String[] args) {
         //创建一个线程对象
         TestThread01 thread1 = new TestThread01();
         //调用start()方法开启线程
         thread1.start();
         for (int i = 0; i < 2000; i++) {
             System.out.println("主线程"+i);
        }
    }
 }

多个线程同时操作一个资源

 

 //多个线程同时操作同一个对象
 //买火车票
 ?
 //发现问题:多个线程操作同一个资源的情况下,线程不安全,数据紊乱
 public class TestThread04 implements Runnable {
     //票数
     private int ticketNums = 10;
 ?
     @Override
     public void run() {
         while (true){
             if (ticketNums<=0){
                 break;
            }
             try {
                 Thread.sleep(200);
            } catch (InterruptedException e) {
                 e.printStackTrace();
            }
             System.out.println(Thread.currentThread().getName()+"拿到了"+ticketNums--+"张票");
        }
    }
 ?
     public static void main(String[] args) {
         TestThread04 testThread04 = new TestThread04();
         new Thread(testThread04,"学生").start();
         new Thread(testThread04,"老师").start();
         new Thread(testThread04,"黄牛").start();
    }
 }

 

 

 

多线程学习..害慢慢写吧

标签:for   学习   line   override   线程   tom   tar   name   sys   

原文地址:https://www.cnblogs.com/yondddd/p/12609025.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!