JAVA多线程

线程的2中创建方式

创建线程的第一种方式:继承 Thread,由子类重写run方法

class Th1

{

    public static void main(String[] args)

    {

           Thread1 th = new Thread1();

            th.start()

    }

}

class Thread1 extends Thread

{

    public void run()

    {

    // 线程执行内容

    }

}

线程状态:

新建:start()

运行:具备执行资格,同事具备执行权

冻结:sleep(time), wait() -- notify()唤醒, 线程释放了执行权,同事释放执行资格

临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权

消亡:Stop()

创建多线程的第二种方式:实现一个接口 Runable

class Th2

{

    public static void main(String[] args)

    {

        Thread2 t = new Thread2();

        Thread th = new Thread(t);

        th.start();

    }

}


public Thread2 implements Runnable

{

    public vlid run(){

// 线程执行内容

    }

}


多线程安全问题的原因:

一个线程在执行多条语句的时候,并预算同一个数据时,在执行过程中,其他线程参与进来,并操作了这个数据,导致了错误数据的产生。

解决安全问题的原理:

只要将操作的共享数据的语句在某一时段让一个线程执行完,在执行过程中,其他西城不能执行就可以了

JAVA中提供一个解决方案方式:同步代码块

格式:

Synchroized(对象) { 对任意对象都可以,这个对象就是缩

需要同步的代码

}


wait 和 sleep 的区别:

wait 可以指定时间,也可以不指定时间。不指定时间,只能由notify或者notifyAll来唤醒

sleep:必须指定时间,时间到自动从冻结状态转成运行状态

wait : 线程会释放执行权,而且线程会释放锁

sleep:线程会释放执行权,但是不会释放锁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,188评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,065评论 1 18
  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 10,219评论 12 45
  • 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要...
    嘟爷MD阅读 12,040评论 21 272
  • 知道吗? 我从未踏出北方这片热土。一步都不曾有过。 课本里有好多文章描绘着南方的模样,诗句说:“日出江花红...
    鲸在沙滩上阅读 5,031评论 7 11