java多线程

java多线程:
1.并发执行与并行执行:
并行执行通常指同一时刻有多个代码在处理器上执行,这往往需要多个处理器,如cpu等硬件的支持。
并发执行:在单处理器上,同一时刻只能执行一个代码,但在一个时间段内,这些代码交替执行,即所谓的“微观串行,宏观并行”。若机器只有一个cpu运算时间并不会因为采取多线程的方式而减少,但是整体的感觉会比较好(如按钮不会无反应)。
2.线程的创建
有两种分别是:thread线程类与runnable接口。但都用到thread类及其相关方法。
构造函数:
Thread();Thread(String name);Thread(Runnable target);
Thread(Runnable target,String name);
方法:
start();run();join();setpriority();sleep()等;
创建方法一:
class mythread extends Thread
{
public void run()
{
   ....执行相关代码;
        执行到最后一条语句退出。
}
}
调用:
mythread my=new mythread ();
my.start();
创建方法二:
class mythread implements Runnable
{
public void run()
{
   ....执行相关代码;
        执行到最后一条语句退出。
}
}
调用:
mythread my=new mythread();
Thread t=new Thread(my);
t.start();
各自的特点:编写简单,但使用Thread类就不能再继承其他类。使用Runnable接口能实现多继承。
3.数据的共享
mythread my1=new mythread();//mythread继承的是Thread
mythread my2=new mythread();
mythread my3=new mythread();
my1.start();
my2.start();
my3.start();//三个线程分别调用自己的线程,不能实现共享
///
mythread t=new mythread();//mythread继承的是Runnable接口
Thread t1=new Thread(t,"1窗口");
Thread t1=new Thread(t,"2窗口");
Thread t1=new Thread(t,"3窗口");
t1.start();
t2.start();
t3.start();//三个线程调用的是同一个run方法
由以上可知Runnable接口适合处理多线程访问同一资源的情况,并且可以避免由于java的单继承带来的局限。
4.多线程的同步控制
对某个对象或某个方法加上synchronized互斥锁
如  
 public synchronized 返回类型 方法名()
{
方法体;
}
synchronized的功能是判断对象的互斥锁是否存在,若在就获得互斥锁,然后执行其中的相关代码,若不在,则被其他的线程拿走,就进入等待状态,直到获得互斥锁。synchronized限定的代码段执行完毕就释放互斥锁。
如:
class bank
{
 public synchronized take()
 {...}
}
class customer extends Thread
{
public void run()
{
     for(i<4)
bank.take(100);
}
}


主函数中:
customer c1=new customer();
customer c2=new customer();
c1.start();
c2.start();
执行的结果是:
1900
1800
1700
1600
...
1200
由以上可知实现了对同一资源进行了“原子操作”.
5.线程间的通信
wait(),notify()为线程间的通信提供了有效手段。
对象调用他们两个方法时,必须已经获得该对象的互斥锁,也就是说这两个方法只能在同步代码块里调用。

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AICVer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值