java---1

  最近在做一个小玩意,要用到多线程,java小项目,就像是坦克大战规模大小的小玩意。话说虽然这种小东西不起眼,但是自己动手做一遍,总归是对面向对象和多线程操作有了一个系统的认识嘛。。四不四?在这里打算记一下学习的多线程梗概。

  话说过几周要考操作系统嘛,复习一波线程和进程,一个线程是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程可以得到一段执行自己程序的时间,有一个包含的关系,这样一个进程就可以具有多个并发执行的过程。由此考虑到,如果有一个进程需要许多段代码的操作,就需要产生多线程。

  windows系统是多任务操作系统,它可以以进程为单位来分布,一个进程是包含地址的程序。系统执行进程的方式是一个接一个进行的,个人感觉有那么多进程同时存在是因为现在CPU转换速度太快。。不是系统的锅。。而线程则是可以并发进行的,因为对于一个完整的进程也就是程序来说,很可能是需要多个线程同时完成各自功能。虽然多线程看起来像是同时执行,但事实上在同一时间点上只有一个线程被执行,只是线程之间切换比较快,所以才会产生线程是同时进行的假象。

  在java中,多线程是非常重要的一部分,大致上有两种方式进行线程的实现。

  一种为继承Thread类,这个类中实例化的对象代表线程,完成线程的功能代码放在类的run()方法内,如果一个类继承了Thread类,那么就可以覆盖run()方法,然后调用start()方法实现功能。当执行一个线程程序时,就会产生一个线程,main在此线程上运行,main线程启动是虚拟机的任务,我们的任务是搞定自己写的线程。

 

new Threadtest().start();

  另一种是实现Runnable接口,实质上,第一种方法就是Thread实现了Runnable接口。实现Runnable接口的程序会创建一个Thread对象,实际顺序就是先创建一个Runnable对象,根据这个对象再创建Thread对象,然后调用start()方法启动线程。

private static Thread a;
a=new Thread(new Runnable(){
     public void run(){
     /*...................
     ...................*/
    } 
});
a.start();

  当然,在main中实例化还是必不可少的。。

  在我们上机题目中让实现线程间同步控制,同时实现线程通信。同步机制是为了防止资源冲突,即是给定时间只允许一个线程访问共享资源。同步机制使用synchronized关键字。通常将共享资源的操作放置在synchronized定义的区域内,这样当其他线程也获取到这个锁时,必须等待锁被释放才能进入该区域。

  同步方法就是在方法前面修饰synchronized关键字的方法,其语法如下:

synchronized void doit(){}

  同步方法和同步块运行没什么差别。。更习惯同步方法吧。。通常情况下,因为调度方式的关系,不同线程按顺序执行的,这样,同步机制,互斥量等就有了意义。

 

posted @ 2017-04-22 13:49  -zzmher  阅读(123)  评论(0编辑  收藏  举报