java讲解之线程篇

关于Java线程我想说的话----0002

接着我上一篇线程讲解的文章,现在先讲一讲线程的常用方法;
1.start(),线程的启动方法,也就是把线程加入就绪队列,等待分配cpu;
2.run(),这是线程运行时所运行的代码块;
3.wait(),阻塞状态的等待状态,可能是等待资源等,此是线程会让出cpu,如果此线程有锁 还会释放锁,通常在run()函数里;
4.sleep(time),睡眠状态,睡眠时间以毫秒计,如sleep(3000),就是线程推迟运行3秒; 通常在run()函数里;
5.yield(),任务已完成,暗示调度机制给其他线程分配cpu(暗示不一定管用);
6.interrupt(),中断线程,用法,thread_name.interrupt(),线程发出了中断,但是线程不一定退出.run()函数里有wait(),sleep(),join()等都要catch这个中断即catch interruptException,如下代码

Class ThreadInterrupt extends Thread
{
      public void run()
     {    try{
          sleep(3000);
     }catch(InterruptedException e)
     {
     System.out.println(e.getMessage);
     }
}

7.join(),有插队的意思,如在主函数main()函数里thread_name.join();那么主函数就要thread_name运行完后才能运行,主函数也是个线程,所有你要一个线程先于另一个线程运行的话,在另一个线程里加入一个线程的join(),如我要在b线程先运行于a,那么a的run()里面应该写b.join();这样就行,通常这种方法是a的运行需要b运行后的结果;
二 .线程的优先级:
线程的优先级可分为1到10等级,默认等级为5;线程的子线程和父线程有同样的优先级,比如main()线程和其他线程;线程等级用方法setPriority(int x);线程等级越高越有机会分到cpu;
三.多线程的编程方式
有一些细节应该知道,
1.在任何时间点实际上只有一个线程在运行,就像大脑一样啊,不可能同时做这个
又做那个的;
2.原语操作是不能打断的;原语就是c=a+b;这种语句是不能打断的;这需要自己体会
3.线程并发是多个线程同时处理不同的操作,注意同时二字,这是指宏观上的;
多线程编程可分为不相关线程,相关但是不同步,同步线程,交互式线程;
不相关线程:定义线程之间没有关系,唯一的关系就是cpu是一样的;
相关但不同步:有关系但是相互独立,如收银台,多个收银台收钱;
同步线程:为什么要同步呢,因为不同步可能线程之间会出现错误;
所以同步是为了协调线程之间的制约关系的;主要是针对共享资源的,在同一时间多个线程都想使用的同一资源;主要有生产者消费者问题;即一些线程负责生产,另一些负责取,书上讲的太复杂了,主要是当一个线程取得时候另一个不能生产,
因为加入生产者已经生产了5个产品,消费者要取一个产品然后数量减一;加入两个同一时刻时线程同时运行,加入生产者先生产了一个产品,然后数量加一,为6了,消费者去了一个减一为5了;但是另一种是消费者先去呢数量为4,然后生产者生产了一个又为5了;所有就产生了问题了,你永远不知道数量是多少;所有同步线程就是在消费者
访问共享资源的时候,消费者不能访问资源,就是这个道理;同步线程不难,但是自己要思考才能理解透彻;
--------------------------同步线程还没讲完,下篇继续;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java线程编程是指在一个应用程序中同时执行多个线程,这些线程可以同时访问共享的内存空间,以及共享的对象和变量。Java线程编程可以提高应用程序的性能,增加程序的并发性和响应性。 Java线程编程可以通过以下步骤实现: 1. 创建一个线程类,该类需要继承 Thread 类或实现 Runnable 接口。 2. 重写 Thread 类的 run() 方法或实现 Runnable 接口的 run() 方法,在该方法中编写线程的执行逻辑。 3. 创建线程对象,用 start() 方法启动线程。 4. 在程序中使用 synchronized 关键字实现线程同步,避免多个线程同时访问共享资源导致的数据竞争问题。 5. 使用 wait()、notify() 和 notifyAll() 方法实现线程间的通信和协作。 6. 使用线程池和线程调度器来管理和控制多个线程的执行。 Java线程编程需要注意以下几点: 1. 线程安全问题:多个线程同时访问共享资源可能会导致数据竞争和线程安全问题,需要使用同步机制来解决。 2. 死锁问题:多个线程互相等待对方释放锁,导致所有线程都无法继续执行,这种情况称为死锁,需要避免。 3. 上下文切换:多个线程同时执行会导致 CPU 不停地进行上下文切换,影响程序的性能,需要合理使用线程池和线程调度器来管理线程的执行。 4. 线程间通信:多个线程之间需要进行通信和协作,需要使用 wait()、notify() 和 notifyAll() 方法来实现。 总之,Java线程编程是 Java 编程中的重要部分,需要掌握多线程编程的基本原理和技术,以提高程序的性能和并发性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值