Java语言中的多线程的开发与应用

 ① Java多线程 Java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程, Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且启动线程的唯一方法就 是通过Thread类实例的start( )方法。

因此,有两个方法可以实现自己的线程:

方法1:自己的类继承Thread,并复写run( )方法,就可以启动新线程并执行自己定义的 run( )方法。比如: public class MyThread extends Thread { public run( ) { System.out.println( "MyThread.run( )" ); } } 在合适的地方启动线程:new MyThread( ).start( );

方法2:如果自己的类已经继承了另一个类,就无法直接继承Thread,此时,必须实现一个 Runnable接口: public class MyThread extends OtherClass implements Runnable { public run( ) { System.out.println( "MyThread.run( )" ); } } 为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例: MyThread myt = new MyThread( ); Thread t = new Thread( myt ); t.start( ); 事实上,当传入一个Runnable target参数给Thread后,Thread的run( )方法就会调用 target.run( )方法。

② 线程同步 由于同一进程内的多个线程共享内存空间,在Java中,就是共享实例,当多个线程试图同时修 改某个实例的内容时,就会造成冲突,因此,线程必须实现共享互斥,使多线程同步。最简单的同 步是将一个方法标记为synchronized,对同一个实例来说,任一时刻只能有一个synchronized方法 在执行。当一个方法正在执行某个synchronized方法时,其他线程如果想要执行这个实例的任意一 个synchronized方法,都必须等待当前执行synchronized 方法的线程退出此方法后,才能依次执 行。 但是,非synchronized方法不受影响,不管当前有没有执行synchronized方法,非 synchronized方法都可以被多个线程同时执行。另外必须注意同一时刻,同一实例的synchronized 方法只能被一个线程执行,不同实例的synchronized方法是可以并发的。比如class A定义了 synchronized方法sync( ),则不同实例a1.sync( )和a2.sync( )可以同时由两个线程来执行。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值