`
sealrose
  • 浏览: 5542 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

java真的多线程吗

阅读更多

    (1):主线程1启动了一个线程2,    在线程1里将线程2赋值为NULL,结果线程2根本不会结束

    (2) 线程2实现Runnable接口实现线程的独立,在线程1中创建线程2的时候不用Thread  x=new Thread(new  myThread())的形式可以直接调用线程2的run()方法;

     (3)当程序运行到线程2的死循环的时候,窗口不响应任何事件,让人感觉实在不是多线程.

        在我的理解多线程应该是:线程可以控制线程,线程可以并发的运行.

下面是那个程序的代码://程序的作用是当在面板上双击鼠标的时候,在双击处有闪烁的光标

package zhou;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

  public class FreePanel  extends JPanel implements MouseListener,MouseMotionListener
  {
          int x,y,clickCount;     // 难道是这里JAVA修饰符的原因
         Cursor  cursor;
         public FreePanel()
 {
  this.addMouseMotionListener(this);
  this.addMouseListener(this);
  
 }
 public static void main(String []args)
 {
  JFrame  frame=new JFrame("text");
  frame.setSize(new Dimension(200,200));
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().add(new FreePanel());
  frame.setVisible(true);
  
 }
 public  void mouseEntered(MouseEvent e)
 {}
 public void mouseExited(MouseEvent e)
 {}
 public void mousePressed(MouseEvent e)
 {
  x=e.getPoint().x;
  y=e.getPoint().y;
 }
 public  void mouseReleased(MouseEvent e)
 {}
 public void mouseClicked(MouseEvent e)
 {
 
  
   
  if(e.getClickCount()==2)
  {
  System.out.println("单击了两 次");
  cursor=null;
  cursor=new Cursor(x,y,this);
  cursor.run();
  System.out.println("可以执行到这里");//    这句是永远都执行不到的
  }
 }
 public void mouseMoved(MouseEvent e)
 {
  
  x=e.getPoint().x;
  y=e.getPoint().y;
  this.repaint();
   
 }
 public void mouseDragged(MouseEvent e)
 {}
 public void dctionPerformed(ActionEvent e)
 {
  
 }
 public  void paintComponent(Graphics g)
 {
     super.paintComponent(g);//这句的作用原来这么重要,没有它不能实现重新绘制
     //图象,如果用repaint()方法的话,画面闪烁的像太阳耀斑爆发
  g.drawString("("+x+","+y+")",x,y);
  g.dispose();
 }

}

class Cursor implements Runnable
{
    FreePanel panel;
 int x,y;
 public Cursor(int x,int y,FreePanel panel)
 {  
  this.panel=panel;
     this.x=x;
     this.y=y;
  
 }
 public void run()
 {
  while(true)
    {
   Graphics g=panel.getGraphics();
   g.setColor(Color.BLACK);
   g.drawLine(x,y-10,x,y);
   try
   {
    Thread.sleep(200);
   }
   catch(InterruptedException e)
   {
    System.out.println("interruptedException");
    
   }
   g.setColor(panel.getBackground());
   g.drawLine(x,y-10,x,y);
   try
   {
    Thread.sleep(200);
   }
   catch(InterruptedException e)
   {
    System.out.println("interruptedException");
    
   }
   finally {
    g.dispose();
   }
     }
 }
}

 

 

 

    是我的调用出现了问题,不是JAVA的多线程的问题,JAVA的多线程已经是经过无数次被证明的,在这里我不应该在遇到疑难问题的时候就怀疑JAVA, 不过也有一点让我同样感到可惜,因为几乎没有几个人怀疑JAVA的多线程,在某个条件下,多线程很可能会出现问题,这样的话应该是说给我自己听的,我老师就是这么说的

分享到:
评论

相关推荐

    JAVA模拟多线程给多用户发送短信

    在本文中,我们将深入了解如何使用JAVA来模拟多线程环境下的短信发送过程。该技术的应用场景在于同时为多个用户发送短信,而且每个短信发送动作是独立于其他发送动作的,这使得我们可以利用并发来提高发送效率。 ...

    java多线程.pdf

    ### Java多线程知识点详解 #### 一、Java多线程概述 **Java多线程**是指在Java程序中能够同时执行多个线程的技术。这种技术使得程序可以在多个任务之间并发执行,从而提高了程序的效率和资源利用率。本文将根据...

    java单线程多线程clientserver

    Java中的单线程和多线程是编程中的关键概念,特别是在服务器端开发中。了解它们的原理和应用对于构建高效、可扩展的客户端-服务器应用至关重要。以下是对这些概念的详细解析。 首先,我们来谈谈单线程。在Java中,...

    Java多线程编程详解

    ### Java多线程编程详解:深入理解与实践 #### 一、理解多线程机制 多线程,作为现代编程语言的重要特性之一,允许在单一应用程序内并发执行多个任务,从而极大提升了程序的效率和响应速度。在Java中,多线程的...

    java多线程视频1

    Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用时,多线程技术显得尤为重要。本系列视频教程将深入讲解Java多线程的各个方面,帮助你掌握如何在Java环境中创建、管理以及优化多线程程序。 首先...

    java多线程并发实战和源码

    Java多线程并发实战与源码分析是Java开发中至关重要的一部分,它涉及到程序性能优化、系统资源高效利用以及复杂逻辑的正确同步。本书主要聚焦于Java多线程的基础理论和实际应用,虽然书中实例和源码相对较少,但仍然...

    Java 利用多线程实现文件的分片下载

    刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而...

    java 多线程

    ### Java多线程知识点详解 #### 一、Java Thread 概念 在Java中,**线程**是一种轻量级的进程,它是程序执行流的最小单元。一个标准的Java应用通常至少包含一个线程,即主(Main)线程。Java支持多线程编程,这...

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    在Java编程中,多线程是并发处理任务的关键技术,它允许程序同时执行多个不同的任务。本篇文章将深入探讨如何实现线程的协同、停止、暂停以及继续等操作,这些都是多线程编程中的核心概念。 1. **线程的协同(协作...

    JAVA实现多线程时钟代码程序

    本项目"JAVA实现多线程时钟代码程序"旨在帮助开发者深入理解如何在Java中实现多线程以及如何利用多线程进行图形化显示,如画钟。通过这个例子,我们可以学习到以下几个重要的知识点: 1. **线程基础**:Java中的...

    经典java多线程资料

    ### 经典Java多线程资料知识点解析 #### 一、基本原理 1. **进程与线程的概念:** - **进程**:是运行中的应用程序,它包含了一组顺序执行的指令,并且每个进程都有自己的独立内存空间。 - **线程**:是一个并发...

    彻底明白Java的多线程-线程间的通信.doc

    Java的多线程是编程中的一个关键概念,特别是在并发处理和高性能应用中。本文将深入讲解如何在Java中实现多线程以及线程间的通信。 首先,我们要理解一个虚假的多线程示例。在例1中,创建了两个`TestThread`对象,...

    多线程两种实现方式Java

    在Java编程语言中,多线程是并发执行多个任务或代码段的重要机制。这使得程序能够同时处理不同的任务,提高系统资源的利用率和程序的响应速度。本篇将详细讲解Java中实现多线程的两种主要方法:继承Thread类和实现...

    史上最全 Java 多线程面试题及答案

    Java多线程是Java编程中不可或缺的一部分,它允许并发执行多个任务,从而提高应用程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括它的用途、创建线程的方式、start()与run()的区别、Runnable和...

    Java多线程运算集合

    ### Java多线程运算集合知识点解析 #### 一、Java多线程概念与原理 - **操作系统中的线程与进程**: - **进程**:指的是一个正在运行的应用程序,每个进程都拥有独立的内存空间。 - **线程**:是进程中的一个...

    Java多线程之基础篇(一).docx

    Java多线程是Java语言中的一个重要特性,它允许程序同时执行多个不同的任务,从而提高程序的效率和响应性。在操作系统层面,实现并发最常见的方式是通过进程和线程。进程是具有独立内存空间的执行单元,而线程是进程...

Global site tag (gtag.js) - Google Analytics